New*_*lar 2 angular-material angular
我是编码的新手,也是Angular的新手,所以我想寻求帮助。这是我的第一个问题,请耐心等待。
我想为Angular Material Dialog Service创建包装服务(我只是想教自己-不适用于生产应用程序),所以我在应用程序中创建了一个服务,如下所示:
import {Injectable} from '@angular/core';
import {MatDialog} from '@angular/material';
@Injectable({
providedIn: 'root'
})
export class MatDialogWrapperService {
constructor(private dialog: MatDialog) {
}
open(componentRef, config = {}) {
this.dialog.open(componentRef, config);
}
}
Run Code Online (Sandbox Code Playgroud)
现在,我尝试将其添加到应用程序中的另一个角度组件中,如下所示:我将其导入,添加到providers数组,将其放入构造函数中,然后将其放入方法中(为了方便起见,我删除了一些代码阅读)
@Component({
selector: 'app-intro-form',
templateUrl: './intro-form.component.html',
providers: [MatDialogWrapperService],
styleUrls: ['./intro-form.component.scss']
})
constructor(private modalService: MatDialogWrapperService ) {
}
modalCall() {
this.modalService.open(ModalFormComponent, {
width: '500px'
});
}
Run Code Online (Sandbox Code Playgroud)
加载应用程序时,我在控制台中看到以下错误:
未处理的承诺拒绝:StaticInjectorError(AppModule)[MatDialogWrapperService-> MatDialog]:StaticInjectorError(Platform:core)[MatDialogWrapperService-> MatDialog]:
NullInjectorError:MatDialog没有提供程序!; 区域:任务:Promise.then; 值:错误:StaticInjectorError(AppModule)[MatDialogWrapperService-> MatDialog]:StaticInjectorError(平台:核心)[MatDialogWrapperService-> MatDialog]:
我以为我已经将MatDialog正确地注入了包装服务中?我究竟做错了什么?
提前致谢。
Los*_*nos 12
供将来参考:如果有人在测试时偶然发现这个问题,请添加MatDialogModule到测试导入中。
beforeEach(async () => {
TestBed.configureTestingModule({
imports: [
MatDialogModule,
],
...
Run Code Online (Sandbox Code Playgroud)
此错误意味着您尚未在应用程序中包括“材质对话框”模块,因此没有提供程序。
在中app.module.ts,确保已添加MatDialogModule到导入。
@NgModule({
declarations: [
AppComponent,
...
],
imports: [
MatDialogModule
],
providers: [],
bootstrap: [AppComponent]
})
Run Code Online (Sandbox Code Playgroud)
为了将来参考,您需要包括所用任何材料组件的模块。查看每个文档,以找出您需要的模块(尽管大多数都是自我解释的)
| 归档时间: |
|
| 查看次数: |
1676 次 |
| 最近记录: |