91超碰碰碰碰久久久久久综合_超碰av人澡人澡人澡人澡人掠_国产黄大片在线观看画质优化_txt小说免费全本

溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

Angular5.0 子組件如何通過service傳遞值給父組件

發布時間:2021-07-23 10:43:16 來源:億速云 閱讀:92 作者:小新 欄目:web開發

這篇文章主要為大家展示了“Angular5.0 子組件如何通過service傳遞值給父組件”,內容簡而易懂,條理清晰,希望能夠幫助大家解決疑惑,下面讓小編帶領大家一起研究并學習一下“Angular5.0 子組件如何通過service傳遞值給父組件”這篇文章吧。

一、引言

我們使用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>

二、實現

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();

 // 發射數據,當調用這個方法的時候,Subject就會發射這個數據,所有訂閱了這個Subject的Subscription都會接受到結果
 // loading true為啟用loading,false為關閉loading
 emitBoolean(loading: boolean) {
  this.loadingSource.next(loading);
 }
}

5.在app.component.ts使用subscribe來訂閱,當數據被發射出來的時候,這里就會接收到結果

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來訂閱,當數據被發射出來的時候,這里就會接收到結果
  this.subscription = this.utils.loadingObservable.subscribe(loading => this.loading = Boolean(loading));
 }

 ngOnInit() {
 }

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

}

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

constructor( private utils: UtilsService) {

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

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

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

以上是“Angular5.0 子組件如何通過service傳遞值給父組件”這篇文章的所有內容,感謝各位的閱讀!相信大家都有了一定的了解,希望分享的內容對大家有所幫助,如果還想學習更多知識,歡迎關注億速云行業資訊頻道!

向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI

夹江县| 聂拉木县| 赤峰市| 高州市| 凤庆县| 醴陵市| 鹤山市| 泰来县| 亚东县| 诸城市| 牡丹江市| 凭祥市| 古交市| 东源县| 都兰县| 泗阳县| 南澳县| 科技| 台南市| 衢州市| 铜陵市| 伊春市| 河间市| 探索| 勐海县| 德保县| 宝应县| 宝坻区| 花莲市| 长垣县| 鲜城| 渭南市| 怀宁县| 丹凤县| 新丰县| 布尔津县| 库车县| 繁昌县| 赤水市| 平遥县| 烟台市|