最新文章專題視頻專題問答1問答10問答100問答1000問答2000關(guān)鍵字專題1關(guān)鍵字專題50關(guān)鍵字專題500關(guān)鍵字專題1500TAG最新視頻文章推薦1 推薦3 推薦5 推薦7 推薦9 推薦11 推薦13 推薦15 推薦17 推薦19 推薦21 推薦23 推薦25 推薦27 推薦29 推薦31 推薦33 推薦35 推薦37視頻文章20視頻文章30視頻文章40視頻文章50視頻文章60 視頻文章70視頻文章80視頻文章90視頻文章100視頻文章120視頻文章140 視頻2關(guān)鍵字專題關(guān)鍵字專題tag2tag3文章專題文章專題2文章索引1文章索引2文章索引3文章索引4文章索引5123456789101112131415文章專題3
問答文章1 問答文章501 問答文章1001 問答文章1501 問答文章2001 問答文章2501 問答文章3001 問答文章3501 問答文章4001 問答文章4501 問答文章5001 問答文章5501 問答文章6001 問答文章6501 問答文章7001 問答文章7501 問答文章8001 問答文章8501 問答文章9001 問答文章9501
當(dāng)前位置: 首頁 - 科技 - 知識百科 - 正文

Angular5.0 子組件通過service傳遞值給父組件的方法

來源:懂視網(wǎng) 責(zé)編:小采 時間:2020-11-27 22:11:38
文檔

Angular5.0 子組件通過service傳遞值給父組件的方法

Angular5.0 子組件通過service傳遞值給父組件的方法:一、引言 我們使用ngx-loading,需要在app.component.html上寫模板,綁定一個布爾值loading.此時如果我們想在其他組件中使用這個loading控件,就需要在每個組件的html重新寫模板,這就顯得累贅了。在此,我們以ngx-loading為例,展示子組件如何通
推薦度:
導(dǎo)讀Angular5.0 子組件通過service傳遞值給父組件的方法:一、引言 我們使用ngx-loading,需要在app.component.html上寫模板,綁定一個布爾值loading.此時如果我們想在其他組件中使用這個loading控件,就需要在每個組件的html重新寫模板,這就顯得累贅了。在此,我們以ngx-loading為例,展示子組件如何通

一、引言

我們使用ngx-loading,需要在app.component.html上寫模板,綁定一個布爾值loading.此時如果我們想在其他組件中使用這個loading控件,就需要在每個組件的html重新寫模板,這就顯得累贅了。在此,我們以ngx-loading為例,展示子組件如何通過service改變app組件中的布爾值loading。

// app.component.html
 <ngx-loading [show]="loading" [config]="{ backdropBorderRadius: '14px' }"></ngx-loading>

二、實現(xiàn)

1.安裝ngx-loading 詳情點擊

npm install --save ngx-loading

2.Import the LoadingModule

import { BrowserModule } from '@angular/platform-browser';
import { NgModule } from '@angular/core';
import { CoreModule } from './core/core.module';
import { LoadingModule } from 'ngx-loading';

@NgModule({
 //...
 imports: [
 //...
 LoadingModule
 ],
 //...
})
export class AppModule { }

3.在app.component.html寫ngx-loading模板

// app.component.html
 <ngx-loading [show]="loading" [config]="{ backdropBorderRadius: '14px' }"></ngx-loading>

4.新建一個UtilsService

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

@Injectable()
export class UtilsService {

 private loadingSource = new Subject();
 // 獲得一個Observable;
 loadingObservable = this.loadingSource.asObservable();

 // 發(fā)射數(shù)據(jù),當(dāng)調(diào)用這個方法的時候,Subject就會發(fā)射這個數(shù)據(jù),所有訂閱了這個Subject的Subscription都會接受到結(jié)果
 // loading true為啟用loading,false為關(guān)閉loading
 emitBoolean(loading: boolean) {
 this.loadingSource.next(loading);
 }
}

5.在app.component.ts使用subscribe來訂閱,當(dāng)數(shù)據(jù)被發(fā)射出來的時候,這里就會接收到結(jié)果

import {Component, OnDestroy, OnInit} from '@angular/core';
import {Subscription} from "rxjs/Subscription";
import {UtilsService} from "./service/utils.service";

@Component({
 selector: 'app-root',
 templateUrl: './app.component.html',
 styleUrls: ['./app.component.css']
})
export class AppComponent implements OnInit, OnDestroy {

 loading = false;
 subscription: Subscription;

 constructor(public utils: UtilsService) {
 // 使用subscribe來訂閱,當(dāng)數(shù)據(jù)被發(fā)射出來的時候,這里就會接收到結(jié)果
 this.subscription = this.utils.loadingObservable.subscribe(loading => this.loading = Boolean(loading));
 }

 ngOnInit() {
 }

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

}

6.在其他子組件需要啟用或關(guān)閉loading時,只需要一行代碼。

constructor( private utils: UtilsService) {

 }
this.utils.emitBoolean(true); // 啟用loading
this.utils.emitBoolean(false); // 關(guān)閉loading

7.額外方法:在子組件注入AppComponent,簡單粗暴,但不推薦……

 constructor(public appComponent: AppComponent) {
 
 }
this.appComponent.loading = true; // 啟用loading
this.appComponent.loading = false; // 關(guān)閉loading

聲明:本網(wǎng)頁內(nèi)容旨在傳播知識,若有侵權(quán)等問題請及時與本網(wǎng)聯(lián)系,我們將在第一時間刪除處理。TEL:177 7030 7066 E-MAIL:11247931@qq.com

文檔

Angular5.0 子組件通過service傳遞值給父組件的方法

Angular5.0 子組件通過service傳遞值給父組件的方法:一、引言 我們使用ngx-loading,需要在app.component.html上寫模板,綁定一個布爾值loading.此時如果我們想在其他組件中使用這個loading控件,就需要在每個組件的html重新寫模板,這就顯得累贅了。在此,我們以ngx-loading為例,展示子組件如何通
推薦度:
標(biāo)簽: 5.0 組件的 組件傳
  • 熱門焦點

最新推薦

猜你喜歡

熱門推薦

專題
Top