日本综合一区二区|亚洲中文天堂综合|日韩欧美自拍一区|男女精品天堂一区|欧美自拍第6页亚洲成人精品一区|亚洲黄色天堂一区二区成人|超碰91偷拍第一页|日韩av夜夜嗨中文字幕|久久蜜综合视频官网|精美人妻一区二区三区

RELATEED CONSULTING
相關(guān)咨詢
選擇下列產(chǎn)品馬上在線溝通
服務(wù)時間:8:30-17:00
你可能遇到了下面的問題
關(guān)閉右側(cè)工具欄

新聞中心

這里有您想知道的互聯(lián)網(wǎng)營銷解決方案
angular2組件之間如何通過service互相傳遞

這篇文章主要介紹angular2 組件之間如何通過service互相傳遞,文中介紹的非常詳細(xì),具有一定的參考價值,感興趣的小伙伴們一定要看完!

創(chuàng)新互聯(lián)建站專注于虎林企業(yè)網(wǎng)站建設(shè),響應(yīng)式網(wǎng)站,購物商城網(wǎng)站建設(shè)?;⒘志W(wǎng)站建設(shè)公司,為虎林等地區(qū)提供建站服務(wù)。全流程按需網(wǎng)站策劃,專業(yè)設(shè)計,全程項目跟蹤,創(chuàng)新互聯(lián)建站專業(yè)和態(tài)度為您提供的服務(wù)

母組件傳值給子組件

母組件通過service傳值給子組件,很簡單,聲明一個service

@Injectable()
export class ToolbarTitleService {
 title:string;
}

然后在母組件中依賴注入

@Component({
 selector: 'admin',
 templateUrl: './admin.component.html',
 styleUrls: ['./admin.component.scss'],
 providers: [ToolbarTitleService],
})

子組件中直接聲明即可使用

export class RoleListComponent implements OnInit {
 constructor(private toolbarTitleService:ToolbarTitleService) {
   console.log(this.toolbarTitleService.title);
   }
 ngOnInit() { }
}

子組件傳值給母組件

那么我想反過來傳值回去該怎么辦,即使我在子組件注入了service,母組件也不會在我修改了servie的值之后得到通知,這時候就需要用到subscribe

service代碼:

import { Injectable } from '@angular/core';
import { Subject } from 'rxjs/Subject';

@Injectable()
export class ToolbarTitleService {
 private titleSource = new Subject();
 //獲得一個Observable
 titleObservable =this.titleSource.asObservable();
 constructor() { }
 //發(fā)射數(shù)據(jù),當(dāng)調(diào)用這個方法的時候,Subject就會發(fā)射這個數(shù)據(jù),所有訂閱了這個Subject的Subscription都會接受到結(jié)果
 emitTitle(title: string) {
  this.titleSource.next(title);
 }
}

子組件代碼:

import { ToolbarTitleService } from './../../common/toolbar-title.service';
import { Component, OnInit ,Output,EventEmitter} from '@angular/core';

@Component({
 selector: 'role-list',
 templateUrl: 'role-list.component.html',
 styleUrls: ['./role-list.component.css'],
 providers: [],
})

export class RoleListComponent implements OnInit {
 constructor(private toolbarTitleService:ToolbarTitleService) {
   //調(diào)用方法,發(fā)射數(shù)據(jù)
   this.toolbarTitleService.emitTitle('角色列表');
   }
 ngOnInit() { }
}

母組件:

import { Component, OnInit } from '@angular/core';
import { ToolbarTitleService } from "app/common/toolbar-title.service";
import { Subscription } from "rxjs/Subscription";

@Component({
 selector: 'admin',
 templateUrl: './admin.component.html',
 styleUrls: ['./admin.component.scss'],
 providers: [ToolbarTitleService],
})

export class AdminComponent implements OnInit {
 title: string;
 subscription: Subscription;
 constructor(private toolbarTitleService: ToolbarTitleService) {
  //使用subscribe來訂閱,當(dāng)數(shù)據(jù)被發(fā)射出來的時候,這里就會接收到結(jié)果
  this.subscription = this.toolbarTitleService.titleObservable.subscribe(src => console.log('得到的title:' + src));

 }

 ngOnInit() {

 }
 //銷毀的時候需要取消訂閱,因為訂閱之后會一直處于觀察者狀態(tài),不取消會導(dǎo)致泄露
 ngOnDestroy() {
  this.subscription.unsubscribe();
 }
}

以上是“angular2 組件之間如何通過service互相傳遞”這篇文章的所有內(nèi)容,感謝各位的閱讀!希望分享的內(nèi)容對大家有幫助,更多相關(guān)知識,歡迎關(guān)注創(chuàng)新互聯(lián)行業(yè)資訊頻道!


網(wǎng)頁名稱:angular2組件之間如何通過service互相傳遞
轉(zhuǎn)載來源:http://www.dlmjj.cn/article/ipshjh.html