angular父子组件相互传值
<div class="cnblogs_code"><pre>// 调用子组件向子组件传值和方法的方式<br><app-header <span style="color: rgba(255, 0, 0, 1)">="title"</span> <span style="color: rgba(255, 0, 0, 1)">="run</span>" ="this"></app-header></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> 子组件向父组件间传值</p>
<p>1、通过ViewChild获取子组件的方法和属性 </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> </p>
<p><img src="https://img2018.cnblogs.com/i-beta/1631381/201912/1631381-20191203135311228-1499402642.png"></p>
<p> </p>
<p> 父组件中接收(同vue中的emit)</p>
<p><img src="https://img2018.cnblogs.com/i-beta/1631381/201912/1631381-20191203135721199-2107201752.png"></p>
<p> </p>
<p> </p>
<p> </p>
<p> </p>
<p> </p>
<p> </p>
<p> </p>
<p> </p>
<p> </p>
<p> </p>
<p> </p><br><br>
来源:https://www.cnblogs.com/cazj/p/11959189.html
頁:
[1]