2016-08-02 15 views
-1

Ich bin mit zwei verschiedenen Komponenten,Angular2, Wie verwende ich ein Objekt von einer Komponente zu einer anderen Komponente?

ist sample.ts, ist eine andere testing.ts

export class TestComponent { 
save(){ 
    console.log('this is a testing file') 
    } 
} 

Ist das possibe save() in sample.ts verwenden ?? was ist in testing.ts -> speichern() ??

Wenn dies möglich Mittel, jemand plz mir helfen ...

+1

https://angular.io/docs/ts/latest/cookbook/component-communication .html –

+0

Was ist Ihre Komponentenhierarchie? Welche Komponente ist Eltern und welche ist Kind? – hendrix

+0

sample.ts ist übergeordnet, testing.ts ist ein Kind – Ived

Antwort

0

würde ich diese Funktion in einem gemeinsam genutzten Dienst gestellt und es injizierbare machen und es überall verwenden.

@Injectable() 

    export class MyService{ 

    public save(){ 

    console.log('this is a testing file') 

    } 
} 

In Ihren Komponenten:

constructor(private myService:MyService){ 

    // use it however you want 
    myService.save(); 

    } 

Und wenn Sie dies nicht tun, müssen Sie den Export in seperat, die nur funktionieren:

export function save() { 

    console.log('this is a testing file') 

} 

EDIT:

Wenn Sie den Status dieses Dienstes für alle Ihre Komponenten beibehalten möchten, müssen Sie ihn in Ihrer Top-Level-App bereitstellen.

Der Dienst verhält sich wie ein Singleton-Objekt, und alle untergeordneten Komponenten verwenden ihn, und der Status wird gespeichert.

Also gehen Sie zu Ihrem app.ts (wahrscheinlich) und stellen Sie den Dienst zur Verfügung und löschen Sie ihn aus der Liste aller untergeordneten Komponentenanbieter.

+0

Wenn ich "Public" in meinem save() hinzufügen bedeutet, wird es Show-Fehler sein. angular2-polyfills.js: 390 Fehler: SyntaxError: Unerwartetes Token. (...) :( – Ived

+0

Mein Fehler, speichern sollte eine Funktion sein, keine Klasse! :) – Milad

+0

Ja, Sie haben Recht, ich habe es aktualisiert. Ich habe es von einer Komponente zur anderen retten können. aber ich kann keinen Wert bekommen. Bitte sehen Sie meine Post-PLZ ... – Ived

0

Sie können Ihre Methode öffentlich machen: public save() { ... } dann Ihre Testcomponent in Ihrem Sample importieren, eine Instanz von Testcomponent erstellen und rufen let tc = new TestComponent(); tc.save();

+0

Ich habe einen folgenden Fehler erhalten, angular2-polyfills.js: 390 Fehler: SyntaxError: Unerwarteter Token. (...) – Ived

Verwandte Themen