Angular2 Objekt Undefiniert
Immer "Objekt nicht definiert" beim Zugriff auf ein Objekt der Service-Komponente. Aber hart codiert unterhalb der Daten für javaScript-Variablen arbeitet, ist schön und zeigt den Objekt-Typ "object Array"
Daten.json
[
{
"id": 1,
"name": "Malad",
"gateway": "10.10.100.1",
"device": "cisco"
}, {
"id": 2,
"name": "Kandhivali",
"gateway": "222.30.100.1",
"device": "Juniper"
}
]
DataService.ts
import {Injectable} from 'angular2/angular2'
import {Http} from 'angular2/http';
@Injectable()
export class DataService {
tdata = [
{
"id": 1,
"name": "Malad",
"gateway": "10.10.100.1",
"device": "cisco"
}, {
"id": 2,
"name": "Kandhivali",
"gateway": "222.30.100.1",
"device": "Juniper"
}
];
data;
constructor(http: Http){
http.get('Data.json')
.toRx()
.map(res => res.json())
.subscribe(res => this.data= res);
}
}
DataPage.ts
import {Component, View, CORE_DIRECTIVES} from 'angular2/angular2'
import {DataService} from './DataService'
@Component({
selector: 'DataPage'
})
@View({
template: `
{{data | json}} //Working //object Array
<br>
{{data | json}} //Not Wokring //object Undefined //No data :(
`
directives: [CORE_DIRECTIVES]
})
export class DataPage{
query;
tquery;
constructor( public dataService:DataService){
this.query = dataService.data; //object Undefined
this.tquery = dataService.tdata; //object Array
}
}
Du musst angemeldet sein, um einen Kommentar abzugeben.
Das ist, weil du immer
data
asynchron. Sie können nicht erwarten, dass der service, den Rückgabewert, wenn Sie nennen Sie es, so sollten Sie Sie wieder dem Beobachtbaren in Ihrem service und abonnieren Sie Sie in Ihre Komponente.In Ihrem Dienst
In der Komponente
und ändern Sie Ihre Ansicht zu diesem
Hier eine repro : http://plnkr.co/edit/BeMpYR?p=preview