2017-12-31 31 views
1

Mit Angular versuche ich, eine lokale Variable vom Konstruktor the in das HTML zu übergeben.Mit Angular, wie kann ich eine Variable in HTML ausgeben?

Hier ist mein TS:

import { Component } from '@angular/core'; 
import { NavController } from 'ionic-angular'; 

@Component({ 
    selector: 'page-random', 
    templateUrl: 'random.html' 
}) 
export class RandomPage { 

    constructor(public navCtrl: NavController) { 

    var restaurants = [ 
    'Restaurant1', 
    'Restaurant2', 
    'Restaurant3' 
    ]; 

    var restaurant = restaurants[Math.floor(Math.random()*restaurants.length)]; 
    console.log(restaurant); 
    } 

} 

Hier mein HTML ist:

<ion-content padding> 
    <ion-item> 
    {{restaurant}} 
    </ion-item> 
</ion-content> 

restaurant wird protokolliert wird, wenn das Konstruktor Feuer. Ich bin mir nicht sicher, wie ich es im HTML anzeigen soll. Was vermisse ich?

+0

können Sie die eckige Version erwähnen? oder ist dieser Winkel 1? –

+0

@NevilleNazerane Dies ist Angular 5. – cfoster5

+0

ich würde empfehlen, es als Tag –

Antwort

1

Sie können die Variable var nicht an den HTML-Code binden (weil es keine Eigenschaft ist!). Erstellen Sie eine String-Variable und binden Sie diese an den HTML-Code. Das Schlüsselwort this wird verwendet, um auf die Eigenschaft innerhalb der Komponente zuzugreifen.

export class RandomPage { 
    restaurant: string; 

    constructor(public navCtrl: NavController) { 

    var restaurants = [ 
    'Restaurant1', 
    'Restaurant2', 
    'Restaurant3' 
    ]; 

    this.restaurant = restaurants[Math.floor(Math.random()*restaurants.length)]; 
    console.log(this.restaurant); 
+2

Kleine Änderungen: Variablen! = Eigenschaften/Felder/Elemente. – user2864740

5

restaurant wird im Konstruktor Umfang definiert ist, nicht als eine Instanzvariable. Daher hat Angular keinen Zugriff auf die Variable. Sie müssen Ihren Code so ändern, dass er mit diesem allgemeinen Format übereinstimmt, das eine öffentliche Instanzvariable bar definiert, und weist ihr dann einen Wert innerhalb des Klassenkonstruktors Foo zu.

export class Foo() { 
    public bar: string; 

    constructor() { 
     this.bar = 'a string'; 
    } 
} 

Hier ist die TypeScript handbook section auf Variablen Deklarationen. Es könnte eine Lektüre wert sein.

+1

Beachten Sie, dass gemäß der verknüpften TypeScript-Dokumentation * Variablen keine Mitglieder sind! * Hier ist der [Typeskriptüberblick über Klassen] (https://www.typescriptlang.org/docs/handbook/classes.html): members = * Eigenschaften * + Methoden (+ Konstruktor), aber * nicht * Variablen (wie mit 'var' oder' let' oder Parametern definiert). – user2864740

Verwandte Themen