我想在Angular 2中使用模板驱动的表单,我需要在我的指令中访问当前的ngForm,作为本地属性,我不想将它们作为参数传递 .
我的表单看起来像这样:
<form #frm="ngForm" (ngSubmit)="save(frm)">
<input [(ngModel)]="user.name" #name="ngForm" type="text">
<a (click)="showFrm()" class="btn btn-default">Show Frm</a>
</form>
在我的组件中
@Component({
selector: 'addUser',
templateUrl: `Templates/AddUser`,
})
export class AddUserComponent implements CanDeactivate {
public user: User;
// how can I use this without defining the whole form
// in my component I only want to use ngModel
public frm : ngForm | ControlGroup;
public showFrm() : void{
//logs undefined on the console
console.log(this.frm);
}
}
这是可能的,因为我需要检查myFrm是否是valide或是否触及了我无法将当前表单作为参数传递的函数,例如“routerCanDeactivate”,我不想使用模型驱动的表单太多,无法在代码中编写,我喜欢旧的学校ng1模型绑定 .
我更新了我的示例,并且组件中不知道frm .
2 回答
您需要检查输入上的
ngControl
属性 .在组件中,您可以访问“frm”变量
您无法在构造函数中访问
frm
,此时它不在那里,但在ngAfterViewInit中您可以访问它 .