通过脚本来显示message

使用场景

  • message是一个全局组件,当使用的时候。并不希望要在模板里添加message模板。
  • 希望可以通过类似的代码来做到如此效果。this.messageService.error('test1')来显示一个message

实现的步骤

  1. 方法一( 最不好用)
    通过依赖注入的document https://angular.cn/api/common/DOCUMENT获取document,然后通过淳朴的dom操作来添加message.
  2. 方法2(实装起来比较繁琐,而且不够自动化)
    在根组件里依赖注入ViewContainerRef,然后把ViewContainerRef注册到message服务里去。后面调用message服务时,相当于动态添加组件。https://angular.cn/guide/dynamic-component-loader
  3. 方法3 (参考的ng-zorro https://ng.ant.design/components/message/zh)
    此方法够自闭,不会污染其他页面代码。但是实现比上面麻烦。
    1. 首先得获取applicationRef https://angular.cn/api/core/ApplicationRef
    2. 构建一个容器,把容器视图挂载到applicationRef上
    3. 后面的显示message相当于添加视图到这个容器里
    4. 具体实现看https://github.com/NG-ZORRO/ng-zorro-antd/blob/master/components/message/nz-message-base.service.ts

你可能感兴趣的:(通过脚本来显示message)