Dołączyłem plunkera z mojego kodu kreskowego2. Chcę wydrukować pole z mojego JSON, ale nie mogę wydrukować, ponieważ początkowo mój obiekt jest pusty i jest wypełniany przez obietnicę.angle2: Błąd: TypeError: Nie można odczytać właściwości "..." nieokreślonego
To jest mój plik komponent
import {Component, NgModule, OnInit} from '@angular/core'
import {BrowserModule} from '@angular/platform-browser'
class MyData {
xyz : MySubData;
}
class MySubData {
name : string;
}
@Component({
selector: 'my-app',
template: `
<div>
<h2>Hello {{name}}</h2>
{{abc.xyz.name}}
</div>
`,
})
export class App implements OnInit {
abc : MyData = null;
constructor() {
this.name = 'Angular2'
}
ngOnInit() {
setTimeout(() => {
this.abc = new MyData();
this.abc.xyz = new MySubData();
this.abc.xyz.name = "Binita";
}, 2000);
}
}
@NgModule({
imports: [ BrowserModule ],
declarations: [ App ],
bootstrap: [ App ]
})
export class AppModule {}
Kiedy jestem usunięcie linii {{abc.xyz.name}}
z mojego szablonu to działa prawidłowo.
Używam ustawionego limitu czasu w moim kodzie, ponieważ otrzymuję moje dane z obietnicy (to jest wywołania asynchronicznego).
Mogę zrozumieć początkowo jako jest null
, mój kod nie może znaleźć abc.xyz.name. Ale nie chcę wystawiać żadnego warunku do sprawdzenia. Ponieważ mam wiele właściwości wewnątrz JSON i nie jest możliwe dla każdej właściwości, aby napisać, jeśli warunek.
Wcześniej w angularjs 1, jeśli abc ma wartość null, to automatycznie zastąpi go pustym ciągiem. Chcę zrobić to samo w kanciarzu2. Proszę zasugeruj.
Poniżej plunker
https://plnkr.co/edit/u1NqNF0penz7OS55QmoU?p=preview
zapisany mój dzień! Dzięki! – Gandarez