2016-01-19 63 views
2

我學習Angular2,我有這樣的成分:從組件發送數據到其他組件Angular2

MainComponent.ts

import {Component} from 'angular2/core'; 
import {UsersTableComponent} from './UsersTableComponent'; 
import {UserAddComponent} from './UserAddComponent'; 

@Component({ 
    selector: 'main', 
    templateUrl: '../app/views/mainView.html', 
    directives: [UsersTableComponent, UserAddComponent] 
}) 

export class MainComponent { 
    constructor() {} 
} 

UserAddComponent.ts

import {Component} from 'angular2/core'; 
import {GenderPipe} from '../pipes/GenderPipe'; 

@Component({ 
    selector: 'userAdd', 
    templateUrl: '../app/views/userAdd.html', 
    pipes: [GenderPipe] 
}) 

export class UserAddComponent { 
    constructor() {} 

    addUser() { 
     alert(1); 
    } 
} 

UserTableComponent

import {Component} from 'angular2/core'; 
import {UserServices} from '../services/UserServices'; 
import {User} from '../classes/User'; 
import {GenderPipe} from '../pipes/GenderPipe'; 

@Component({ 
    selector: 'usersTable', 
    templateUrl: '../app/views/usersTable.html', 
    pipes: [GenderPipe] 
}) 

export class UsersTableComponent { 
    users: Array<User> 

    constructor(UserServices: UserServices) { 
     this.users = UserServices.getUsers(); 
    } 
} 

UserAddComponent上ADDUSER方法,我需要閱讀從模板中的一些值,並更新用戶雖然UserServices。更新時,我需要從UserTableComponent調用一個方法,以刷新添加到用戶數據的表。

我如何可以調用其他組件的方法從另一個組件

回答

0

您可以在用戶服務中添加一個事件(用戶添加)。當從用戶服務收到響應(添加一個元素)時,它可以調用相應事件發射器的emit方法。 UserTableComponent組件可以使用subscribe方法註冊此事件,以在事件被觸發時通知。

另一種方法是將觸發這個「用戶添加」從UserAddComponent組件本身事件:

@Component({ 
    (...) 
}) 
export class UserAddComponent { 
    @Output() userAdded; 

    constructor(private service:UserService) { 
    } 

    addUser() { 
    // user is linked to a form for example 
    this.service.addUser(this.user).subscribe(
     (addedUserData) => { 
     this.userAdded.emit(addedUserData); 
     } 
    } 
} 

其它成分(表中的一個)可以使用這樣的事件:

<add-user (user-added)="refreshTable()"></add-user> 

希望它可以幫助你, Thierry

+0

超級討厭當人們downvote而不留下評論原因: -/ –

+0

我不知道爲什麼我t狡猾的一個有效的選擇,我甚至提到它自己。但我的反饋是,這樣你就打破了整個綁定的目的。它有它的用途,但是如果你要發佈和訂閱組件之間的每個變化,爲什麼你會首先使用綁定框架? – Langley

+1

@Langley:我明白你的意思......我們可以將響應內容添加到數組綁定的列表中。問題是我們可以使用可觀察到的異步管道來顯示列表... –

相關問題