這不是我不想更新視圖,我只是不明白爲什麼它會在我不期望它時更新它(因爲對象是在NG外部更新的)。Angular 2更新查看它什麼時候不應該?
好的。
我有這個簡單的代碼:
@Component({
selector: 'my-app',
template: `
<div>
<input type='button' value="Fill more" (click)="fillMore()"/>
<ul>
<li *ngFor="let item of Items ">
{{item}}
</li>
</ul>
</div>
`,
})
export class App {
Items:Array<number> = new Array<number>();
constructor(private mySignalRService:MySignalRService)
{
this.Items.push(...[1,2,3]); //initial values
}
fillMore()
{
this.mySignalRService.go(this.Items);
}
}
正如你看到的,我也注入服務:
@Injectable()
export class MySignalRService
{
makeDummyDb:Promise<Array<number>>()
{
return new Promise((v,x)=> {
setTimeout(function(){v([100,200,300]);},800);
})
}
go(arr : Array<number>) : number
{
this.makeDummyDb().then((newValues)=>arr.push(...newValues)) ;
return 5; //this method must return a number
}
}
現在 - 當我點擊按鈕(在「填寫更多「按鈕),我做看到附加的項目,但是當我想起它,它不是因爲更新因爲我相信makeDummyDb:Promise
是在角的區域外(我可能在這裏是錯誤的)
問:
是不是陣列更新發生外角的區域?我如何模擬一個真正的外部區域,以便代碼無法工作? (用於測試)
看看這個運行的東西zone.js之外 http://stackoverflow.com/questions/43121400/run-ngrx-effect-outside-of -angulars-zone-to-prevent-timeout-in-massractor – intekhab