angular之交互

一.通過setter 截聽輸入屬性值的變

利用getter setter對(duì)值進(jìn)行獲取和處理

二. ngOnChanges()來截聽輸入屬性值的變化

監(jiān)測(cè)輸入屬性值的變化
當(dāng)需要監(jiān)視多個(gè)、交互式輸入屬性的時(shí)候,本方法比用屬性的 setter 更合適。

三.父組件監(jiān)聽子組件的事件(組件輸入輸出)

@Input() name = '';//父組件->向子組件傳遞數(shù)據(jù)。
@Output() voted = new [EventEmitter]<boolean>();//父組件可以獲取子組件的信息,同時(shí)父組件要?jiǎng)?chuàng)建html監(jiān)聽
EventEmitter是node.js的一個(gè)監(jiān)聽器。

四.父級(jí)調(diào)用 @ViewChild()

@ViewChild可以獲取到當(dāng)前組件視圖中的單個(gè)元素
@ViewChildren獲取子組件對(duì)象列表
1.局部變量訪問
@ViewChild('changeColor',{static:true}) changeColor;
2.直接指定組件類

父類的html

<app-home [items]="items" #home ></app-home>
<!-- #home要寫在子控件的里面 -->
<button (click)="appComponentAction()" >父級(jí)點(diǎn)擊這里</button>

父類的Ts

    // 子類的聲明
  @ViewChild('home',{static:true}) home:HomeComponent;
  // 實(shí)現(xiàn)點(diǎn)擊事件
  appComponentAction(): void{
    // 通過home子類調(diào)用屬性和方法
    this.home.textColor1 = 'd';
    this.home.run();
  }
}

子類只需要實(shí)現(xiàn)這倆個(gè)方法和公開屬性就好

@Input()
set textColor1(value:string){
  console.log('textcolor:'+value);
  this.textColorStr = value;
}
 get textColor1():string{
  return this.textColorStr ;
}

run(){
  console.log('running');
}

五.父和子通過服務(wù)通信

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡(jiǎn)書系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

推薦閱讀更多精彩內(nèi)容

  • 1.父組件通過屬性綁定的方式將數(shù)組從上到下的流入到子組件中,子組件需要通過@Input裝飾器來獲取。 例如: 2....
    我不傻_cyy閱讀 713評(píng)論 0 1
  • 組件間交互簡(jiǎn)單來說就是讓兩個(gè)或多個(gè)組件之間共享信息。接下來我們就對(duì)Angular2組件間的交互做一個(gè)簡(jiǎn)單的解...
    tuacy閱讀 1,240評(píng)論 0 2
  • 最近到了新公司,用的技術(shù)是angular4,以前只用過angular1,本來以為兩者差別不大,結(jié)果了解之后才知道...
    小燕子小圓子閱讀 331評(píng)論 1 3
  • 官網(wǎng):https://angular.cn/guide/component-interaction[https:/...
    周末不敲鍵盤閱讀 501評(píng)論 0 0
  • Angular元素就是打包成自定義元素的 Angular 組件。所謂自定義元素就是一套與具體框架無關(guān)的用于定義新 ...
    前端菜籃子閱讀 1,454評(píng)論 0 1