Я создал следующую структурную директиву в Angular 8:
@Directive({
selector: '[myDirective]',
providers: [NgModel]
})
export class MyDirective implements OnInit {
constructor(private ngModel: NgModel, private templateRef: TemplateRef<any>,
private viewContainer: ViewContainerRef, private resolver: ComponentFactoryResolver) {
}
ngOnInit() {
this.viewContainer.createEmbeddedView(this.templateRef);
console.log(this.ngModel.model);
}
}
, которую я использую следующим образом:
<input [(ngModel)]="model" *myDirective>
Однако значение ngModel, введенное в директиву, похоже, быть неинициализированным. Т.е. this.ngModel.model
всегда возвращает undefined
. У меня эта проблема только со структурными директивами. В других директивах свойство ngModel предоставляет мне модель. Для этих директив мне также не нужно добавлять providers: [NgModel]
к @Directive
.
Кто-нибудь знает, что я делаю неправильно?