1

作者:心叶
时间:2018-07-24 16:48:56

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

通过@Input()可以实现父组件传递数据给子组件,下面先看看子组件代码:

import { Component, Input } from '@angular/core';
            
@Component({

    selector: 'child-comp',

    template: `
        <section>
            <header>{{title}}</header>
            <p>{{message}}</p>
        </section>
    `

})
export class ChildComponent {

    @Input() title: string;

    @Input('msg') message: string;

}

其中@Input('msg')是为message定义了别名,接着,在父组件中通过属性就可以传递值进来了:

<child-comp title="数据传递" msg="这是数据传递演示"></child-comp>

父组件通过监听子组件的事件获取子组件传递的数据

子组件传递数据给父组件是通过emit的方式,先看一下子组件代码:

import { Component, Input, Output, EventEmitter } from '@angular/core';
                
@Component({

    selector: 'child-comp',

    template: '<button (click)="doit(\'来自子组件的数据\')">按钮</button>'

})
export class ChildComponent {

    @Output() onDoit = new EventEmitter<string>();
                
    doit(info: string) {

        this.onDoit.emit(info);

    }
}

通过@Output()触发父组件里面定义的onDoit事件,因此,需要在父组件中注册事件处理方法:

<child-comp (onDoit)="getInfo($event)"></child-comp>

getInfo是定义的一个方法,$event就是子组件传递的数据,点击子组件的按钮就会触发这个方法(弹出一句话),方法代码如下:

......
    
    getInfo(info:string){
        alert(info);
    }

......  

心叶
304 声望114 粉丝

我还惊讶地意识到, 在我生命中有很多时刻, 每当我遇到一个遥不可及、令人害怕的情境,并感到惊慌失措时, 我都能够应付——因为我回想起了很久以前自己上过的那一课。