【发布时间】:2018-02-25 18:59:49
【问题描述】:
我还是 Angular 的新手,我发现 form 和 setTimeout 很奇怪...... 当我尝试在 OnInit 上的 setTimeout 中获取 TD 的表单控件时,它可以工作,但在 setTimeout 函数之外却不能。 setTimeout 的超时设置为 0 毫秒。你知道是什么导致了这种行为吗?我不想将它包装在 setTimeout 函数中...
模板:
<form #f="ngForm">
<div class="form-group">
<label for="email">Email address:</label>
<input type="text"
name="email"
id="email"
[(ngModel)]="model.email"
required
email>
</div>
<div class="form-group">
<label for="subscription">Select subscription:</label>
<select name="subscription"
id="subscription"
[(ngModel)]="model.subscription">
<option value="basic">Basic</option>
<option value="advanced">Advanced</option>
<option value="pro">Pro</option>
</select>
</div>
<div class="form-group">
<label for="password">Password:</label>
<input type="text"
name="password"
id="password"
[(ngModel)]="model.password"
required>
</div>
<button type="submit">Submit</button>
</form>
组件:
import { Component, ViewChild, OnInit } from '@angular/core';
import { NgForm } from '@angular/forms';
@Component({
selector: 'app-root',
templateUrl: './app.component.html',
styleUrls: ['./app.component.css']
})
export class AppComponent implements OnInit {
@ViewChild('f') f: NgForm;
model = {
email: '',
subscription: 'advanced',
password: ''
};
constructor() {}
ngOnInit(): void {
setTimeout(() => {
console.log(this.f.form.get('subscription')); // Works
}, 0);
console.log(this.f.form.get('subscription')); // Doesn't work
}
}
感谢您的回答 + 抱歉我的英语不好。
【问题讨论】:
标签: angular typescript