一抹微兰 發表於 2019-11-29 17:33:00

angular父子组件相互传值

<div class="cnblogs_code">
<pre>// 调用子组件向子组件传值和方法的方式<br>&lt;app-header <span style="color: rgba(255, 0, 0, 1)">="title"</span> <span style="color: rgba(255, 0, 0, 1)">="run</span>" ="this"&gt;&lt;/app-header&gt;</pre>
</div>
<p>在子组件中,引入Input,通过@input() 方式引入,即可通过this.xxx使用</p>
<div class="cnblogs_code">
<pre>import { Component, OnInit, Input } from '@angular/core';<br><br>@Component({<br>selector: 'app-header',<br>templateUrl: './header.component.html',<br>styleUrls: ['./header.component.less']<br>})<br>export class HeaderComponent implements OnInit {<br>constructor() { }<br> <span style="color: rgba(255, 0, 0, 1)"> @Input() title: any;</span><br><span style="color: rgba(255, 0, 0, 1)">@Input() run: any;</span><br><span style="color: rgba(255, 0, 0, 1)">@Input() parent: any;</span><br>ngOnInit() {<br>}<br>getPatrent() {<br>    this.run();<br>   <span style="color: rgba(255, 0, 0, 1)"> this.parent.run(); // 可以直接调用父组件的属性和方法</span><br>}<br>}</pre>
</div>
<p>&nbsp;子组件向父组件间传值</p>
<p>1、通过ViewChild获取子组件的方法和属性&nbsp;</p>
<div class="cnblogs_code">
<pre>import { Component, OnInit, <span style="color: rgba(255, 0, 0, 1)">ViewChild</span> } from '@angular/core'<span style="color: rgba(0, 0, 0, 1)">;

@Component({
selector: </span>'app-home'<span style="color: rgba(0, 0, 0, 1)">,
templateUrl: </span>'./home.component.html'<span style="color: rgba(0, 0, 0, 1)">,
styleUrls: [</span>'./home.component.less'<span style="color: rgba(0, 0, 0, 1)">]
})
export class HomeComponent implements OnInit {
public title: any </span>= '首页'<span style="color: rgba(0, 0, 0, 1)">;
<span style="color: rgba(255, 0, 0, 1)">@ViewChild(</span></span><span style="color: rgba(255, 0, 0, 1)">'child', {static: false</span><span style="color: rgba(0, 0, 0, 1)"><span style="color: rgba(255, 0, 0, 1)">}) child: any;</span>
constructor() { }
ngOnInit() {
}
run() {
    alert(</span>'父组件'<span style="color: rgba(0, 0, 0, 1)">);
}
getChildValue() {
    </span><span style="color: rgba(255, 0, 0, 1)">this</span><span style="color: rgba(0, 0, 0, 1)"><span style="color: rgba(255, 0, 0, 1)">.child.childRun(); // 通过这种方式可以获取到子组件的方法和属性值</span>
}
childFun(e) {
    console.log(e);
}
}</span></pre>
</div>
<p>2、通过事件广播</p>
<p>子组件中引入Output和EventEmitter,再使用@Output定义,通过emit分发</p>
<p>&nbsp;</p>
<p><img src="https://img2018.cnblogs.com/i-beta/1631381/201912/1631381-20191203135311228-1499402642.png"></p>
<p>&nbsp;</p>
<p>&nbsp;父组件中接收(同vue中的emit)</p>
<p><img src="https://img2018.cnblogs.com/i-beta/1631381/201912/1631381-20191203135721199-2107201752.png"></p>
<p>&nbsp;</p>
<p>&nbsp;</p>
<p>&nbsp;</p>
<p>&nbsp;</p>
<p>&nbsp;</p>
<p>&nbsp;</p>
<p>&nbsp;</p>
<p>&nbsp;</p>
<p>&nbsp;</p>
<p>&nbsp;</p>
<p>&nbsp;</p><br><br>
来源:https://www.cnblogs.com/cazj/p/11959189.html
頁: [1]
查看完整版本: angular父子组件相互传值