最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

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

 更新時(shí)間:2021年07月28日 09:20:43   作者:青城同學(xué)  
本文主要寫用cdk實(shí)現(xiàn)一個(gè)簡單的Toast組件,使用的是cdk中的overlay模塊,需要手動(dòng)安裝環(huán)境,具體安裝方法及相關(guān)實(shí)現(xiàn)代碼跟隨小編一起看看吧

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

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

1.環(huán)境安裝

cdk不是angular的默認(rèn)模塊,需要手動(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編寫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

編寫好Service后,只需要Angular會(huì)默認(rèn)注入到root模塊,只需要在需要彈出Toast的組件的構(gòu)造方法寫上對(duì)應(yīng)的ToastService就可以正常運(yùn)行了。

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

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

gif效果圖

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

相關(guān)文章

  • 在Angular項(xiàng)目使用socket.io實(shí)現(xiàn)通信的方法

    在Angular項(xiàng)目使用socket.io實(shí)現(xiàn)通信的方法

    這篇文章主要介紹了在Angular項(xiàng)目使用socket.io實(shí)現(xiàn)通信的方法,本文給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下
    2021-01-01
  • 深入淺析AngularJS中的module(模塊)

    深入淺析AngularJS中的module(模塊)

    我們所說的模塊,是你的AngularJS應(yīng)用程序的一個(gè)組成部分,它可以是一個(gè)Controller,也可以是一個(gè)Service服務(wù),也可以是一個(gè)過濾器(Filter),也可以是一個(gè)directive(指令)等等…都是屬于一個(gè)模塊,本文給大家介紹AngularJS中的module(模塊) ,感興趣的朋友一起學(xué)習(xí)吧
    2016-01-01
  • RequireJs的使用詳解

    RequireJs的使用詳解

    本文主要介紹了RequireJs的使用。具有很好的參考價(jià)值,下面跟著小編一起來看下吧
    2017-02-02
  • AngularJS實(shí)現(xiàn)樹形結(jié)構(gòu)(ztree)菜單示例代碼

    AngularJS實(shí)現(xiàn)樹形結(jié)構(gòu)(ztree)菜單示例代碼

    這篇文章運(yùn)用示例代碼給大家詳細(xì)介紹了利用AngularJS如何實(shí)現(xiàn)樹形結(jié)構(gòu)(ztree)菜單,文中僅用了幾行AngularJS代碼就是了這個(gè)功能,對(duì)大家日常開發(fā)很有幫助,有需要的朋友們可以參考借鑒,下面來一起看看吧。
    2016-09-09
  • Angular父組件調(diào)用子組件的方法

    Angular父組件調(diào)用子組件的方法

    組件是一種特殊的指令,使用更簡單的配置項(xiàng)來構(gòu)建基于組件的應(yīng)用程序架構(gòu).這篇文章主要介紹了Angular組件——父組件調(diào)用子組件方法,需要的朋友可以參考下
    2018-04-04
  • Angular實(shí)現(xiàn)svg和png圖片下載實(shí)現(xiàn)

    Angular實(shí)現(xiàn)svg和png圖片下載實(shí)現(xiàn)

    這篇文章主要介紹了Angular實(shí)現(xiàn)svg和png圖片下載實(shí)現(xiàn),文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2019-05-05
  • Angular?Component屬性綁定target和attr.target的區(qū)別分析

    Angular?Component屬性綁定target和attr.target的區(qū)別分析

    這篇文章主要介紹了Angular?Component屬性綁定target和attr.target的區(qū)別分析,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪
    2023-07-07
  • 詳解AngularJS中ng-src指令的使用

    詳解AngularJS中ng-src指令的使用

    這篇文章給大家詳細(xì)介紹了AngularJS中ng-src指令的使用,對(duì)大家學(xué)習(xí)AngularJS具有一定參考價(jià)值,有需要的朋友們可以參考借鑒。
    2016-09-09
  • AngularJs bootstrap搭載前臺(tái)框架——js控制部分

    AngularJs bootstrap搭載前臺(tái)框架——js控制部分

    本文主要介紹AngularJs bootstrap搭載前臺(tái)框架js控制部分的資料,這里有實(shí)現(xiàn)代碼,有興趣的小伙伴可以參考下
    2016-09-09
  • AngularJS ng-bind-template 指令詳解

    AngularJS ng-bind-template 指令詳解

    本文注意介紹AngularJS ng-bind-template 指令,這里把相關(guān)資料整理了一下,并附實(shí)例代碼,有需要的小伙伴可以參考下
    2016-07-07

最新評(píng)論

汉川市| 芒康县| 宁夏| 马公市| 怀来县| 昆山市| 台江县| 潍坊市| 田阳县| 读书| 大悟县| 红河县| 双辽市| 珠海市| 达日县| 黄山市| 赤壁市| 札达县| 尉犁县| 文成县| 林甸县| 政和县| 治县。| 石门县| 吉隆县| 合作市| 易门县| 辉南县| 镇安县| 通化市| 莫力| 南华县| 诸城市| 葫芦岛市| 霍山县| 阿巴嘎旗| 定南县| 廊坊市| 西贡区| 项城市| 阿尔山市|