2017-04-03 48 views
0

我與角2的實驗,我試着用內置的HTTP服務的HTTP請求:角2查看HTTP調用後

@Injectable() 
export class MyService { 
    constructor(private http: Http) { 
    } 

    public get(): Observable<string[]> { 
     return this.http.get('http://localhost:8080/endpoint') 
       .map((data) => <string[]>data.json()['content']); 
    } 
} 

用法如下:

export class MyComponent implements OnInit { 
    public content: string[]; 

    constructor(private myService: MyService) { 
    } 

    public ngOnInit(): void { 
     this.myService.get().subscribe((data) => { 
      this.content = data; 
     }); 
    } 
} 

如果我使用zone來運行數據分配,那麼它的工作方式與預期的一樣,但是我覺得這有點不方便,我不明白爲什麼它不起作用。

我讀過代碼可能在角度區域之外運行,但我不明白爲什麼,因爲我只使用內置功能。

查看綁定:

<div *ngFor="let str of content"> 
    {{ str }} 
</div> 

能否請你幫忙嗎?

謝謝!

+3

你的視圖綁定是什麼樣的。在這個例子中,我也沒有看到你需要'zone.run(...)'的原因。 –

+0

我也沒有,這就是爲什麼我不明白爲什麼它不工作。我已經添加了視圖綁定。 – galovics

+0

如果您添加'

{{content | json}}
',您會得到什麼? –

回答

0

原來,問題既不是webpack,也不是我的代碼,而是我使用的第三方代碼。

我實現了基於this answer的Google登錄,因爲您可以看到它使用本機JS處理程序 - 我認爲這是導致問題的原因。如果我將該代碼放入zone.run,那麼一切正常。我認爲原因是處理程序在區域上下文之外運行,這就是爲什麼視圖沒有更新。