typescript从另一个组件类访问组件类变量

时间:2017-06-12 20:00:37

标签: angular typescript ionic2

我有两个组件,分类ChatPageHomePage

由于注入了许多服务,类ChatPage有一个很大的构造函数,还有一个数组:

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

班级HomePage,这是另一个组成部分:

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

    chatRoot = ChatPage;
    settingsRoot = SettingsPage;

 constructor(private chatService: ChatService) {

 }

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

 }
}

我想将消息重置为[]

但是,在目前的状态下,我收到的投诉是msg未知。

2 个答案:

答案 0 :(得分:1)

在上面的示例中,由于ChatService由两个组件共享。 您可以在该服务中使用msg变量并从两个组件中修改它。 这样,它可以在两个组件中使用。

另一种方法是使用@Input()装饰器,如果有一个包含A和B组件的父组件。

答案 1 :(得分:1)

您不初始化ChatPage或调用该组件。示例中的chatRoot = ChatPage变量只是类定义的副本,其中msg从未初始化。

组件可以通过多种方式进行通信或共享信息。有关详细信息和示例,请参阅this page of the documentation。最常见的方法是:

  • 通过服务保存公共信息
  • 使用@Input()装饰器进行组件之间的分层通信