• angular——组件交互


     

      angular是以组件化的形式来实现,因而组件交互是极为基础且重要的,下面对其组件之间的交互方式一一介绍。

      1. 通过输入型绑定把数据从父组件传到子组件。

      child.component.ts:

       <p>{{message}}</p>

      parent.component.ts:  

      <app-child [message]="callChild"></app-child>
     

    2. 通过serter接听输入属性值的变化
      

      


      parent.component.ts:
        <app-child [name]="name"></app-child>


      3.父组件监听子组件的事件

      child.component.ts:

      

      parent.component:

      <app-child [onVoted]="onVoted($event)"></app-child>

      onVoted(agreed: boolean) { console.log(agreed); }

     

      4. 父组件与子组件通过本地变量互动

      child:
        stop(){};
        start(){};
      
      parent:
        <app-child #child></app-child>
        <button (chilk)="child.start()"></button>
     
      注:用本地变量可使用在父组件模板里面来读取子组件的属性或者使用其方法;


      5. 父组件调用@ViewChild()

        4>局限性:只能在组件模板里面使用子组件的小户型或方法,但是父组件的类并不能使用;

        当父组件类需要这种访问时,可以把子组件作为 ViewChild,注入到父组件里面。

      parent:

      @ViewChild(CountdownTimerComponent)

      private childComponent: ChildComponent;

      start(){

        this.childComponent.start();

      }

      6. 父组件和子组件通过服务来通讯

      service:

        private a = new Subject<string>();

        private b = new Subject<string>();

        ac = this.a.asObservable();

        bc = this.b.asObservable();

        calla(messageA: string){

          this.a.next(messageA);

        } 

        callb(messageB: string){

          this.b.next(messageB);

        } 

     

      parent:

        @Component({

          selector: app-parent,

          providers: [Service]

        })

        nbr = 1;

        subscription: Subscription;

        constructor(private service: Service){

          this.subscription = service.ac.subscribe(message => {

            console.log(message);

          })

        }

        add() {

          this.service.callb(nbr);

        }

      

      child:

        constructor(private service: Service){

          this.subscription = service.bc.subscribe(message => {

            console.log(message);

          })

        }

        add(){

          this.service.calla("child call A");

        }

        

       这样子父组件都可通过自己类中的方法使用服务来影响到另一个组件

  • 相关阅读:
    深圳的2022
    Erlang port communicate with python
    Google v8实现类似nodejs的import加载模块
    手撕某解析网站,获取真实播放地址(保姆级讲解)(转)
    存储过程中组建集合
    svn cleanup 系统找不到指定路径_SVN:cleanup failed to process the following paths 错误
    安装Android Studio时,没有sdk列表
    html 打印时 &nbsp; &nbsp; 空格不等于一个汉字问题
    使用layui出现Uncaught ReferenceError: layui is not defined
    OKR基础知识(三)
  • 原文地址:https://www.cnblogs.com/skylen/p/10119115.html
Copyright © 2020-2023  润新知