Angular2:查看不更新

时间:2017-06-14 10:03:43

标签: angular angular2-template materialize

这是另一个“查看不变”问题

我选择名称时需要更新一个组件。 但是,我不知道为什么,我必须在模型更改之前选择2倍的名称。这就像我第一次选择模型时没有更新。

将angular 2 4.0.0与materializeCSS一起使用(来自实体化的自动完成)

Example

那么,我想在我选择后直接显示按钮。

此部分的HTML模板:

<form>
            <i class="material-icons prefix">search</i>
            <input id="search" type="text" name="autoComplete" materialize="autocomplete" [materializeParams]="[autocompleteInit]">
        </form>
        <div *ngIf="CVSelected.getCV()">
            <button type="button" [routerLink]="['/dashboard/cv']" class="waves-effect waves-light btn">Passer à l'édition</button>
        </div>

AutocompleteInit:

autocompleteInit: any = {
    data:  {Some_data_here},
    onAutocomplete: (str: string) => {
        this.dataService.GetFromString(str).subscribe(value => {
            console.log(value);
            this.CVSelected.setCV(value[0]); // This makes the button appears on my template with a get
        });
        this.changement.detectChanges(); // Tried this and other functions that does the same but doesn't work
    },
};

有人遇到过这个问题吗?如果是,有些解决方案吗?

提前谢谢

1 个答案:

答案 0 :(得分:2)

在这种情况下,最可能的原因是角度区域外的执行代码。为了解决这个问题,我建议你在角度区域内运行代码,如:

constructor(private zone: NgZone) { }

autocompleteInit: any = {
  data:  {},
  onAutocomplete: (str: string) => {
     zone.run(() => {
        this.dataService.GetFromString(str).subscribe(value => {
          console.log(value);
          this.CVSelected.setCV(value[0]); // This makes the button appears on my template with a get
        });
     });
  },