Я рассмотрел некоторые вопросы здесь, касающиеся привязки данных на Angular2, но я не могу получить ожидаемый результат. Я также новичок как в Angular & Meteor.Еще одно двунаправленное привязку по углу (с метеорным)
Вот что у меня в app.component.html
<form [formGroup]="getNameForm" (ngSubmit)="getName()">
<label>ID: </label><br>
<input type="text" formControlName="userID"><br>
<button type="submit">Get</button>
</form>
<div (ngModel)="basicUser">
<label name="basicUserName">{{basicUser.userName}}</label><br>
</div>
И что в app.component.ts
...
export class AppComponent implements OnInit {
basicUser: BasicUser = { ... }
...
getName(): void {
...
Meteor.call('api.getName',{
userId: this.getNameForm.value.userID
}, (err, res) => {
if (err) {
console.log(err);
alert(err);
} else {
console.log(res);
this.basicUser = res;
});
...
}
Так что я ожидаю, чтобы случиться, когда я нажимаю кнопку отправки для getNameForm
для этикетки basicUserName
для обновления со значением от basic.userName
. Вместо этого на экране нет обновления данных.
Однако, если я нажму на текстовое поле ввода &, затем щелкните в другом месте страницы, значение метки обновится правильно. Я хотел бы, чтобы это произошло при нажатии кнопки формы, поскольку переменная, которая используется в метке, изменяется при выполнении метода кнопки.
Подняв некоторые ответы на похожие вопросы, я дал this.ref.detectChanges()
попытку включить его в качестве последней строки метода. Это не помогло.
Некоторые другие ответы здесь предлагаются с использованием ngModel
, где я сейчас нахожусь с кодом, но это тоже не делает трюк. Я чувствую, что мне не хватает чего-то очевидного.
Это отлично работает, спасибо! Отмечено ответ. NgZone - это путь. – Neil