2017-11-13 4 views
0

Ich habe folgenden CodeAngular 4 Immobilien erhalten Bindung zeigt nichts

export class TestClass{ 
    private time: string = "Test"; 

    public get TimeFormatted(): string { 
     return this.time; 
    } 
} 

und in meiner Vorlage

<span>{{item.TimeFormatted}}</span> 

aber nichts zeigt in den HTML-Code auf.

+0

Sie verwenden dieses Modell für einige Daten, die Sie von Ihrem Server empfangen? – marvstar

+0

Bitte runable Beispiel –

+0

hinzufügen Ja, ich benutze es, damit ich es so formatieren kann, wie ich es will. Aber abgesehen davon sollte selbst wenn ich nicht oben Code wollte nicht funktionieren? – pantonis

Antwort

1

Ich würde vermuten, dass Sie nur die Modelle in Ihrer Anfrage wie folgt zuordnen.

let Array<TestClass> arr = response.json(); 

Wenn so diese keine Methoden nicht beeinflussen, die in Ihrem Modell umgesetzt werden. Um Ihre Modellmethoden zu verwenden, müssen Sie ein neues Objekt aus Ihrer Klasse initiieren und dessen Attribute zuordnen. Wenn Sie ein Modell in TS initiieren, werden die Funktionen korrekt hinzugefügt. Wenn Sie Ihre Anfrage einfach analysieren, werden die Attribute wie gewohnt zugänglich sein, aber Ihre Methoden werden nicht hinzugefügt, da Ihr Objekt nicht initiiert wird, sondern nur analysiert wird.

const newArr = new Array<TestClass>(); 
arr.foreach(item =>{ 
    let newItem = new TestClass(); 
    //mapping stuff 
    newArr.push(newItem); 
}); 
+0

Danke, dass du nicht weißt, dass es so funktioniert. – pantonis

+0

froh zu helfen :) – marvstar

1

Wenn Sie Getter und Setter verwenden möchten, versuchen Sie den folgenden Code. Jedes Mal, wenn Sie die Zeit ändern, wird die Setter-Funktion aufgerufen, und Sie können eine beliebige Bedingung darüber verwenden. Sie können auch die Arbeitsversion sehen hier https://stackblitz.com/edit/ionic-getters-setters

TS-Datei

import { Component } from '@angular/core'; 

@Component({ 
    selector: 'page-home', 
    templateUrl: 'home.html' 
}) 
export class HomePage { 
    public _time: string; 
    public password : string; 


    constructor() { 
    this._time="Test"; 
    this.password="password"; 

    } 


    public get time(): string { 
     return this._time; 
    } 

    public set time(value) { 
     alert("set"); 
     if(this.password==="password"){ 
    this._time = value+"verified"; 
     } 
    } 

} 

HTML-Code

<input type="text" [(ngModel)]="time" />