使用 mdl 自定义对话框时如何为组件传递输入参数?
How do I pass input parameters for a component when using mdl custom dialog?
这是来自官方 angular-mdl 网站的创建自定义对话框的教程代码。
let pDialog = this.dialogService.showCustomDialog({
component: LoginDialogComponent,
providers: [{provide: TEST_VALUE, useValue: 'Just an example'}],
isModal: true,
styles: {'width': '350px'},
clickOutsideToClose: true
});
现在,如果我向 LoginDialogComponent 添加一些 @Input() 参数,例如@Input() requireCaptcha: boolean;
如何在那里传递参数?
你不能在你的情况下使用@Input,因为这需要一个元素,你可以在其中传递你的 requireCaptcha 值。
目的是使用提供程序数组将值传递给您的对话框组件。首先创建一个 InjectionToken:
export const REQUIERE_CAPTCHA = new InjectionToken<boolean>('requireCaptcha');
然后在您的 showCustomDialog 方法中使用:
let pDialog = this.dialogService.showCustomDialog({
component: LoginDialogComponent,
providers: [{provide: REQUIERE_CAPTCHA, useValue: true}],
isModal: true,
styles: {'width': '350px'},
clickOutsideToClose: true
});
现在您可以在对话框组件中访问 REQUIERE_CAPTCHA:
constructor(
private dialog: MdlDialogReference,
@Inject( REQUIERE_CAPTCHA) requireCaptcha: boolean) {
console.log(requireCaptcha);
}
这是来自官方 angular-mdl 网站的创建自定义对话框的教程代码。
let pDialog = this.dialogService.showCustomDialog({
component: LoginDialogComponent,
providers: [{provide: TEST_VALUE, useValue: 'Just an example'}],
isModal: true,
styles: {'width': '350px'},
clickOutsideToClose: true
});
现在,如果我向 LoginDialogComponent 添加一些 @Input() 参数,例如@Input() requireCaptcha: boolean;
如何在那里传递参数?
你不能在你的情况下使用@Input,因为这需要一个元素,你可以在其中传递你的 requireCaptcha 值。
目的是使用提供程序数组将值传递给您的对话框组件。首先创建一个 InjectionToken:
export const REQUIERE_CAPTCHA = new InjectionToken<boolean>('requireCaptcha');
然后在您的 showCustomDialog 方法中使用:
let pDialog = this.dialogService.showCustomDialog({
component: LoginDialogComponent,
providers: [{provide: REQUIERE_CAPTCHA, useValue: true}],
isModal: true,
styles: {'width': '350px'},
clickOutsideToClose: true
});
现在您可以在对话框组件中访问 REQUIERE_CAPTCHA:
constructor(
private dialog: MdlDialogReference,
@Inject( REQUIERE_CAPTCHA) requireCaptcha: boolean) {
console.log(requireCaptcha);
}