2017-12-05 3 views
0

nicht sicher, warum dies hier geschieht, erhalte ich diesen Fehler aus meiner Komponente:ERROR Typeerror: kann nicht lesen Eigentum ‚...‘ undefinierten

ERROR TypeError: Cannot read property 'timezone_offset' of undefined 
at Object.eval [as updateRenderer] (SettingsComponent.html:16) 
at Object.debugUpdateRenderer [as updateRenderer] (core.js:14377) 
at checkAndUpdateView (core.js:13513) 
at callViewAction (core.js:13858) 
at execComponentViewsAction (core.js:13790) 
at checkAndUpdateView (core.js:13514) 
at callViewAction (core.js:13858) 
at execEmbeddedViewsAction (core.js:13816) 
at checkAndUpdateView (core.js:13509) 
at callViewAction (core.js:13858) 

Interessanterweise noch zeigt es die richtige Zeichenfolge in dem Vorlage und es gibt keine Fehler in ng-cli. Hier ist der Code für die Komponente den Fehler produziert:

import { Component, OnInit } from '@angular/core'; 
import { GetProfileService } from '../../services/get-profile.service'; 

@Component({ 
    selector: 'app-settings', 
    templateUrl: './settings.component.html' 
}) 
export class SettingsComponent implements OnInit { 

    results: any; 
    profile: any; 

    constructor(private getProfileService: GetProfileService) { } 

    ngOnInit() { 

     this.getProfileService.profileAPI().subscribe(
      data => { 
       this.results = data 
       this.profile = this.results 
       console.log(this.profile) 
      } 
     ); 

    } 

} 

Ich bin jetzt nur mit {{ profile.timezone_offset }} als das einzige, was auf meiner Vorlage ...

+1

Bitte zeigen Sie Ihre Vorlage. Möglicherweise liegt der asynchrone Vorgang vor, Sie erhalten diesen Fehler. Versuchen Sie '{{profile? .timezone_offset}}'. –

+1

Haben Sie '{{profile? .timezone_offset}}' ausprobiert? – Zammy

+0

ja, das schien das Problem zu beheben. Würde es dir etwas ausmachen, mir zu erklären, was das ist? tut –

Antwort

1

Es scheint, dass Ihre Daten nicht innerhalb der geladen profile Objekt zu der Zeit, als es gerendert wurde. Erst nach dem Abschluss der asynchronen Operation werden Daten innerhalb des Objekts profile gesetzt. ?. sollte verwendet werden, wenn Ihr Objekt bei asynchronem Aufruf arbeitet. timezone_offset wird nur ausgewertet, wenn das Objekt profile definiert ist.

Durch asynchronen Betrieb, könnte man diesen Fehler bekommen. Versuchen Sie, die folgenden

{{ profile?.timezone_offset }}

1

Verwenden ?.safe navigation operator < = Dokumentation

{{ profile?.timezone_offset }} 

Es prüft, ob profile bevor Sie versuchen, existiert von ihm Zugang Werte. Dies ist nützlich, wenn profile asynchron geladen wird.

Verwandte Themen