【发布时间】:2019-04-15 06:14:09
【问题描述】:
我对 Angular 有点陌生,我正在尝试创建一个检查 localstorage 的服务,如果所需的密钥不存在,则打开一个 Modal 询问名称以创建该 localstorage 密钥。
但是,模式打开了,但我只看到“禁用”背景,而不是模式信息。
我不知道自己做错了什么,也找不到很多关于此的信息。
不知道服务是否是执行此操作的正确方法,我需要一些帮助。 此外,服务依赖于其他服务是一种好习惯吗?
代码如下:
import { Injectable } from '@angular/core';
import { NgbModal, ModalDismissReasons } from '@ng-bootstrap/ng-bootstrap';
import { localStorageService } from './localStorage.service';
let template: `<ng-template #content let-modal let-c="close" let-d="dismiss">
<div class="modal-header">
<h4 class="modal-title">Insert Your Name</h4>
</div>
<div class="modal-body">
<form>
<div class="input-group">
<input [(ngModel)]='name' id="name" class="form-control" name="name">
</div>
</form>
</div>
<div class="modal-footer">
<button type="button" class="btn btn-outline-dark" (click)="saveName(name);c('Save Click')">Save</button>
</div>
</ng-template>`
@Injectable({
providedIn: 'root'
})
export class CheckuserService {
private closeResult: String;
constructor(private modalService: NgbModal, private lss: localStorageService, ) { }
test() {
if (this.lss.getStorage() !== "null") {
this.modalService.open(template, { ariaLabelledBy: 'modal-basic-title' }).result.then((result) => {
this.closeResult = `Closed with: ${result}`;
}, (reason) => {
});
} else {
console.log("Already logged")
}
}
}
【问题讨论】:
-
不相关,但考虑在您的模板中将
var更改为let或const。是一种更好的做法。 -
我对 NgBootstrap 不太熟悉,但我认为您缺少一些应该在应用中导入的样式。
-
谢谢@dream88,你是对的。
-
@DanR。但这仅在我从该服务打开模板时发生,当我在组件上对其进行测试时,它可以在不添加任何样式的情况下工作
-
@Maty 尝试将 css 移动到您的 styles.css 中,以便 css 不依赖 shadow dom 选择器(css 范围)。
标签: angular ng-bootstrap angular7