国产成人精品18p,天天干成人网,无码专区狠狠躁天天躁,美女脱精光隐私扒开免费观看

使用Angular CDK實(shí)現一個(gè)Service彈出Toast組件功能

發(fā)布時(shí)間:2021-08-17 12:16 來(lái)源: 閱讀:0 作者:青城同學(xué) 欄目: JavaScript 歡迎投稿:712375056

目錄

在A(yíng)ngular中,官方團隊在開(kāi)發(fā)Material組件庫的同時(shí),順手做了一套Component dev kit,也就是在A(yíng)ngular世界中大名鼎鼎的CDK,這套工具包提供了非常多的前端開(kāi)發(fā)的通用功能。Angular的知名組件庫幾乎都依賴(lài)了這套開(kāi)發(fā)包。比如ANT,PrimeNG等。

本文主要寫(xiě)用cdk實(shí)現一個(gè)簡(jiǎn)單的Toast組件,使用的是cdk中的overlay模塊。

1.環(huán)境安裝

cdk不是angular的默認模塊,需要手動(dòng)安裝 yarn add @angular/cdk

在app.module中引入cdk中的OverlayModule

import { OverlayModule } from '@angular/cdk/overlay';

@NgModule({
  declarations: [
    AppComponent
  ],
  imports: [
    BrowserModule,
    OverlayModule
  ],
  providers: [],
  bootstrap: [AppComponent]
})
export class AppModule { }

2.創(chuàng )建Toast組件和ToastService

  • 使用ng g c Toast命令快速創(chuàng )建一個(gè)組件模版
  • 使用ng g s Toast創(chuàng )建一個(gè)Service的模版

2.1編寫(xiě)Toast組件和樣式

ToastComponent

<div class="q-toast">
    <div class="q-toast-mask"></div>
    <p class="q-toast-msg">{{msg}}</p>
</div>

.q-toast {
  padding: .2rem .5rem;
  width: 5rem;
  position: relative;
  display: flex;
  flex-direction: row;
  align-items: center;
  justify-content: center;
  

  .q-toast-mask {
    position: absolute;
    top: 0;
    left: 0;
    right: 0;
    bottom: 0;
    background-color: #000;
    opacity: .8;
    border-radius: 2rem;
  }

  .q-toast-msg {
    color: white;
    z-index: 999;
  }
}

ToastService

import { Overlay, OverlayConfig } from '@angular/cdk/overlay';
import { ComponentPortal } from '@angular/cdk/portal';
import { Injectable, InjectionToken, Injector } from '@angular/core';
import { ToastComponent } from './toast.component';

@Injectable({
  providedIn: 'root'
})
export class ToastService {

  constructor(private overlay: Overlay) { }

  Show(msg: string) {
    const config = new OverlayConfig();
    const positionStrategy = this.overlay.position()
      .global().centerVertically().centerHorizontally();
    config.positionStrategy = positionStrategy;
    let overlayRef = this.overlay.create(config);
    const inject = Injector.create({
      providers: [
        {
          provide: Toast_Ref,
          useValue: overlayRef
        },
        {
          provide: Toast_Msg,
          useValue: msg
        }
      ]
    })
    console.log(inject.get<string>(Toast_Ref))
    let partal = new ComponentPortal(ToastComponent, null, inject);
    overlayRef.attach(partal)
    setTimeout(() => {
      overlayRef.detach()
      overlayRef.dispose();
    }, 2000);
  }

}

export const Toast_Ref = new InjectionToken<{}>('Toast_Ref');
export const Toast_Msg = new InjectionToken<{}>('Toast_Msg');

使用Toast

編寫(xiě)好Service后,只需要Angular會(huì )默認注入到root模塊,只需要在需要彈出Toast的組件的構造方法寫(xiě)上對應的ToastService就可以正常運行了。

export class AppComponent {
  constructor(private toast:ToastService) {
  }
  test() {

    this.toast.Show('hello cdk!')
  }
}

gif效果圖

到此這篇關(guān)于使用Angular CDK實(shí)現一個(gè)Service彈出Toast組件的文章就介紹到這了,更多相關(guān)Angular CDK 實(shí)現Toast組件內容請搜索腳本之家以前的文章或繼續瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

免責聲明:本站發(fā)布的內容(圖片、視頻和文字)以原創(chuàng )、來(lái)自本網(wǎng)站內容采集于網(wǎng)絡(luò )互聯(lián)網(wǎng)轉載等其它媒體和分享為主,內容觀(guān)點(diǎn)不代表本網(wǎng)站立場(chǎng),如侵犯了原作者的版權,請告知一經(jīng)查實(shí),將立刻刪除涉嫌侵權內容,聯(lián)系我們QQ:712375056,同時(shí)歡迎投稿傳遞力量。

亚洲欧美AⅤ在线资源| 免费 人妻 无码 不卡中文...| 欧美成人片在线观看| 无人一码二码三码4码免费| 欧美性受XXXX黑人XXXX| 欧美XXXX色视频在线观看|