我擁有相同的JSON數據,我保存在.ts(硬編碼)和.json(http get)中。兩個對象在開發控制檯中都是一樣的。Angular2奇怪的硬編碼對象vs http.get對象問題
我可以使用「{{beatlesjson | json}}」和「{{beatlesjson.paul | json}}」打印輸出從外部JSON獲取的數據,但我無法打印出「{{beatlesjson.paul.name | json }}「,它打破了進一步的應用程序執行。
如果在TS文件中使用相同的JSON但硬編碼,則以前的paragraf按預期工作。
PS。我注意到,如果我沒有啓動,我甚至不能打印對象和第一個子對象:beatlesjson:Object = {};原來。但它只適用於頂級和第一級,但在對象的第二級上打破。
import {Component,ElementRef,AfterViewChecked,enableProdMode} from 'angular2/core'; enableProdMode();
import {Http, Response, RequestOptions, Headers, HTTP_PROVIDERS, HTTP_BINDINGS} from 'angular2/http';
@Component({
selector: 'my-app',
template: `
<pre>
WORKS {{ beatles | json }}
WORKS {{ beatlesjson | json }}
<hr>
WORKS {{ beatles.paul | json }}
WORKS {{ beatlesjson.paul | json }}
<hr>
WORKS {{ beatles.paul.name | json }}
<!-- BREAKS FURTHER EXEC, DOES NOT WORK {{ beatlesjson.paul.name | json }} -->
<hr>
</pre>
`
})
export class AppComponent {
beatles: Object = {};
beatlesjson: Object = {};
constructor(http: Http){
this.beatles = {
john: {
name: 'John Lennon',
description: 'Imagining all the people',
deceased: true
},
paul: {
name: 'Paul McCartney',
description: 'Believes in Yesterday',
deceased: false
},
george: {
name: 'George Harrison',
description: 'His guitar gently weeps',
deceased: true
},
ringo: {
name: 'Ringo Starr',
description: 'Going to put him in the movies',
deceased: false
}
}
http.get('app/beatles.json')
.subscribe(
data => { this.beatlesjson = data.json() },
err => console.log(err),
() => console.log(this.beatlesjson)
);
}
}
那麼拋出了什麼錯誤?你真的需要那個'name'的過濾器嗎? – charlietfl
嘗試elvis運算符,因爲在加載數據之前paul屬性可能爲null,「{{beatlesjson.paul?.name | json}}' – Chandermani