2016-12-06 2 views
2

Kann eine Funktion mit einem Parameter wie trigger(id) in ngOnInit ausgelöst werden?Param in ngOnInit in Angular2 übergeben

Ich habe eine Funktion, die ich auf (click) Ereignis sowie in ngOnInit auslösen möchte, wenn die Seite zuerst lädt es im Grunde die gleiche Funktion auslöst, weil es den gleichen API-Endpunkt aufruft.

Funktion in ngOnInit

getOrdersFromOrigin(id: number): void { 
    ... 
} 

so in ngOnInit wie dies vielleicht etwas wäre ausgelöst werden? seine zeigt ein Fehler

ngOnInit() { 
    this.getOrdersFromOrigin(id); 
    } 

Id kommt von meinem ngFor, seine ein Id eines Postens „Kann nicht Namen‚id‘gefunden“, die ich (click)="getOrdersFromOrigin(id)"

+2

'id' Teil des Anwendungsbereichs der' getOrdersFromOrigin ist() ', so dass es würde nicht im Bereich von 'ngInInit()' deklariert werden. Wenn Sie nicht wissen, welche ID Sie aufrufen sollen, müssen Sie id festlegen oder stattdessen einen Wert verwenden. – GillesC

+0

Wenn ID in der Funktion nicht geliefert wird, wird es Fehler werfen. Sie müssen das in Ihrer Funktion behandeln, wenn ID nicht definiert oder vorhanden ist. Weil in der ngOnInit-ID möglicherweise nicht verfügbar ist, da Sie den Klick nicht aus der Ansicht auslösen/der Benutzer wird nicht ausgelöst. Übergeben Sie einen Standardwert dafür, falls nicht definiert. – Manish

+0

nein Ich weiß nicht, auf welche ID ich klicken werde, da die IDs von 'ngFor' kommen und einfach die' item.id' in meiner Funktion in '(click)' event übergeben. – MrNew

Antwort

1

Sie können damit umgehen, wenn es in Route wie param ist. Wenn Sie zum Beispiel bearbeiten einige Datensatz in der Tabelle, indem Sie auf Bearbeiten-Button dann Ihre Anwendung zu bilden zu bearbeiten navigieren Sie es so handhaben kann:

import { ActivatedRoute, Params, Router } from '@angular/router'; 

constructor(
    private route: ActivatedRoute 
) { } 

ngOnInit() { 
    this.route.params.forEach((params: Params) => { 
     let id = +params['id']; // (+) converts string 'id' to a number 
     this.getOrdersFromOrigin(id); 
    }); 
} 

getOrdersFromOrigin(id: number){ 
//some code 
}; 
+0

Danke, das ist die eine, die ich brauche, aber die 'getOrdersFromOrigin (ID)' außerhalb der 'forEach' zu setzen, sonst würde es jedes Mal iterieren. – MrNew

0

Die param id in getOrdersFromOrigin ist() klicken möchten , so wäre es nicht im Umfang ngOnInit Arbeit(), mein Vorschlag ist, dass Sie eine Eigenschaft id und markiert es als @Input() erklären kann. dann kannst du es draußen benutzen. Die Codes sind unten:

export class SameComponent implement OnInit { 
    @Input() id:number=0; //initialize 
    getOrdersFromOrigin(id: number): void { 
    ... 
    } 
    ngOnInit() { this.getOrdersFromOrigin(id);} 
} 
+0

Aber dann wird immer die 'id = 0' in der Put als Standardwert nehmen? – MrNew

Verwandte Themen