2017-05-25 4 views
0

Ich sehe einen seltsamen Fehler, wo ich versuche, eine Methode von einer anderen Methode aufzurufen, und beide Methoden sind in der gleichen Angular 2 TypeScript-Komponente.Wie ruft man eine Methode von einer anderen Methode in derselben Angular (Typescript) -Komponentenklasse auf?

Siehe im folgenden Code, der, wenn ngOnInit() aufgerufen wird, startet Methode1. method1 versucht, this.method2() aufzurufen. Hier liegt das Problem. Der Fehler, der der folgenden erscheint, ist: Fehler: nicht Eigenschaft ‚method2‘ undefinierter

lesen Warum ist die dieses Objekt nicht definiert? Wie kann ich das umgehen, so dass ich Methoden, die zu einer Klasse gehören, von anderen Methoden in der gleichen Klasse aufrufen kann, wie in einer Sprache wie Java?

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

@Component({ 
    selector: 'my-dashboard', 
    moduleId: module.id, 
    templateUrl: './dashboard.component.html', 
    styleUrls: [ './dashboard.component.css' ] 
}) 
export class DashboardComponent implements OnInit { 

    constructor() { 
    } 

    ngOnInit(): void { 
    this.method1(); 
    }; 

    method1(): void { 
    this.method2(); 
    }; 

    method2(]): void { 
    console.log("hi"); 
    } 
} 
+1

Ist ] ein Tippfehler? In der Methode2 Definition –

+0

ja, sollte funktionieren, sonst. Nichts ist falsch mit dem Code, den ich sehen kann. – pixelbits

Antwort

-1

Dies ist nicht runnable so kann ich diese Lösung nicht selbst testen, sondern versuchen, die Funktion „this.method2“ und nicht nur „method2“ umbenennen.

0

Ich kopierte Ihren genauen Code in diesem Plunker (aber das ungewöhnliche ']' aus Argument der Methode2 entfernt) und es funktioniert gut. Ich habe auch eine Schaltfläche hinzugefügt, um Method1() so oft aufzurufen, wie Sie möchten.

Mein Vorschlag ist, entfernen Sie moduleId: module.id von den Metadaten Ihrer Komponente und versuchen Sie es erneut. Selbst der Plunker funktioniert nicht, wenn er drin ist.

UPDATE:

"Alle Erwähnung moduleId entfernt. "Component relative Pfade" Kochbuch gelöscht (2017.03.13)" - https://angular.io/docs/ts/latest/guide/change-log.html

app.ts:

@Component({ 
    selector: 'my-app', 
    template: ` 
    <div> 
     <h2>Hello {{name}}</h2> 
     <button (click)="method1()">Invoke Method 1</button> 
    </div> 
    `, 
}) 

export class App implements OnInit{ 
    name:string; 
    constructor() { 
    this.name = `Angular! v${VERSION.full}` 
    } 

    ngOnInit(): void { 
    this.method1(); 
    }; 

    method1(): void { 
    this.method2(); 
    }; 

    method2(): void { 
    alert("hi"); 
    } 

} 
Verwandte Themen