2017-06-12 5 views
0

私は2つのコンポーネントクラスAとBを持っています。typescriptは別のコンポーネントクラスからコンポーネントクラス変数にアクセスします

クラスAは多くのサービスを注入するために大きなコンストラクタを持っています。 iは[]にMSGをリセットする

@Component({ 
    selector: 'page-home', 
    templateUrl: 'home.html', 
    providers: [ChatService] 
}) 
export class HomePage { 

    chatRoot = ChatPage; 
    settingsRoot = SettingsPage; 

constructor(private chatService: ChatService) { 

} 

onReset(){ 
    //this.chatRoot.msg = []; 

} 
} 

ような別の構成要素であるクラスBにおける

IonicPage() 
@Component({ 
    selector: 'page-chat', 
    templateUrl: 'chat.html', 
    providers: [ChatService] 
}) 
export class ChatPage implements OnInit, OnDestroy{ 
    msg:any[]; 

状アレイ。現在の状態では、私はmsgが知られていないことを告白します。

+0

コンポーネント間の階層的な通信のための@Input()デコレータを使用してサービス

  • を介してアクセス共通の情報を維持する、ことができますHomePageでViewChildとインスタンスを実行するか、msgのモデルを作成します – alehn96

  • 答えて

    1

    上記の例では、ChatServiceは両方のコンポーネントで共有されているためです。 そのサービスにmsg変数を設定し、両方のコンポーネントから変更することができます。 このようにして、両方のコンポーネントで使用できます。

    他の方法では、AコンポーネントとBコンポーネントの両方を保持する親コンポーネントがある場合、@Input()デコレータを使用しています。

    1

    ChatPageを初期化したり、コンポーネントを呼び出したりしないでください。あなたの例のchatRoot = ChatPage変数は、クラス定義のコピーに過ぎず、msgは決して初期化されませんでした。

    コンポーネントが情報を伝達または共有する方法は複数あります。詳細および例については、this page of the documentationを参照してください。最も一般的な方法は以下のとおりです。

    • あなたは、他のコンポーネントに変数にコンポーネントを割り当てない
    関連する問題