我正在努力让@Directive按预期工作。Angular2属性指令表格输入
我希望Attr指令能够访问指令构造函数中的model.password并将变量varpassword设置为当前密码。
我还希望能够检索表单域中的所有其他输入,我将如何去做这件事?
很多这样的文档并不完整,因为我在Beta版本中知道。
我一直在试图找出有限的成功天。我已经删除了我试图让它工作的导入,因为我觉得我很困惑如何在指令中正确使用它们,我试过“NgModel,NgControl,ControlGroup,NgFormModel,FormBuilder ...”。
我的测试示例代码如下。
登录-form.html
<form #testForm="ngForm">
Email Address:
<input type="text" name="username" size="50" required="required" [(ngModel)]="model.username" ngControl="username" #username="ngForm" />
Password:
<input type="password" name="password" size="20" required="required" [(ngModel)]="model.password" ngControl="password" #password="ngForm" testdir />
<input type="submit" value="Login" />
</form>
app.ts
import {Component} from 'angular2/core';
import {TestDirective} from '../../directives/test.directive';
@Component({
selector: 'test-app',
templateUrl: 'login-form.html',
directives: [TestDirective]
})
export class TestApp {}
test.directive.ts
import {Directive} from 'angular2/core';
@Directive({
selector: '[testdir]',
host: {
'(keydown)': 'run()'
}
})
export class TestDirective {
varpassword: string;
constructor() {
this.varpassword = [******]
}
run() {
console.log(this.varpassword);
}
}
如果任何人都可以在正确的方向指向我会更赞赏。
谢谢你完美。我试图在我的测试中设置构造函数中的变量,难怪为什么它不起作用。 我现在已经工作如何使用控制台(this.form.controls)时也访问ngForm;我可以看到它返回的对象,你知道一种方法来检查输入类型,例如密码,输入等吗? 再次感谢。 –
您需要利用组件的生命周期挂钩。在构造函数中为时尚早...要访问输入类型,需要注入'ElementRef'。你可以通过'nativeElement.type'来获得这个提示。我更新了plunkr ;-) –
好吧,我看到这是为attr指令输入,但表单对象内的所有其他输入是什么。 我想要实现的是观察表单中的所有输入以更改为ngModel,表单可以包含任何数量的输入,因此不仅仅是用户名和密码。 例如名称,地址1,地址2,邮编,电子邮件,用户名,密码,验证密码。我将循环遍历ngForm.controls对象和任何不是输入密码的输入,我会将其推入指令中的新数组中,并在自定义密码验证程序中使用它们的值。 感谢您的帮助:) –