NullInjectorError:没有 MatDialog 的提供者 - 尝试为 MatDialog 创建包装服务

2024-02-06

我是编码新手,也是 Angular 新手,所以我想我会寻求一些帮助。这是我的第一个问题,所以请耐心等待。

我想为 Angular Material Dialog Service 创建一个包装服务(我只是想自学 - 这不是用于生产应用程序),所以我在我的应用程序中创建了一个服务,如下所示:

import {Injectable} from '@angular/core';
import {MatDialog} from '@angular/material';
    
@Injectable({
    providedIn: 'root'
})
export class MatDialogWrapperService {
    
    constructor(private dialog: MatDialog) {
    }
    
    open(componentRef, config = {}) {
        this.dialog.open(componentRef, config);
    }
}

现在,我尝试将其添加到我的应用程序中的另一个角度组件中,如下所示:我导入它,将其添加到提供者数组中,将其放入构造函数中,然后将其放入方法中(为了方便起见,我删除了一些代码)阅读)

@Component({
    selector: 'app-intro-form',
    templateUrl: './intro-form.component.html',
    providers: [MatDialogWrapperService],
        styleUrls: ['./intro-form.component.scss']
})
export class IntroFormComponent {  
  
    constructor(private modalService: MatDialogWrapperService ) {
    }
    
    modalCall() {
        this.modalService.open(ModalFormComponent, {width: '500px'});
    }
}

当我加载应用程序时,我在控制台中看到以下错误:

未处理的 Promise 拒绝:StaticInjectorError(AppModule)[ MatDialogWrapperService -> MatDialog]:StaticInjectorError(平台: 核心)[ MatDialogWrapperService -> MatDialog]:

NullInjectorError:没有 MatDialog 的提供者! ;区域: ;任务: 承诺.然后;值:错误:StaticInjectorError(AppModule)[ MatDialogWrapperService -> MatDialog]:StaticInjectorError(平台: 核心)[ MatDialogWrapperService -> MatDialog]:

我认为我已经在包装服务中正确注入了 MatDialog?我究竟做错了什么?

提前致谢。


此错误意味着您尚未在应用程序中包含材质对话框模块,因此没有提供程序。

In your app.module.ts,确保您已添加MatDialogModule到您的进口。

@NgModule({
  declarations: [
    AppComponent,
    ...
  ],
  imports: [
    MatDialogModule
  ],
  providers: [],
  bootstrap: [AppComponent]
})

为了将来的参考,您需要包含该模块any您正在使用的材料组件。检查每个模块的文档以找出您需要哪个模块(尽管大多数都是不言自明的)

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

NullInjectorError:没有 MatDialog 的提供者 - 尝试为 MatDialog 创建包装服务 的相关文章

  • 自定义 django-rest-framework-simplejwt 的 JWT 响应

    我正在设置 Django 来发送 JWT 响应而不是视图 我尝试使用 django rest framework simplejwt 这个框架中提供了一个函数TokenObtainPairView as view 返回一对 jwt 我需要使
  • 为什么 Angular 2 ngOnChanges 不响应输入数组推送

    我的角度应用程序遇到了问题 我使用输入作为数组 并在单击事件发生时将值推送到数组 但是当数组推送完成时 ngOnChanges 不会触发 有没有办法触发 ngOnChange 我的代码是 ts 文件是 Component selector
  • 如何处理发布到 npm 的 Angular 2 模块中的脚本依赖关系

    我最近向 npm 发布了一个 Angular 2 库 我已在库 package json 文件中列出了所有依赖脚本 当我跑步时npm install my library所有依赖脚本都没有安装 所以 我的问题是如何在安装库时安装依赖脚本 N
  • angular2-google-maps 自动完成功能不起作用

    我正在尝试使用 angular2 google maps 将自动完成功能添加到我的项目中 我在 AppModule 中添加 AgmCoreModule forRoot 带有库 places 然后在组件中添加自动完成代码 我仍然收到 无法读取
  • Angular:先完全安装 Service Worker

    我正在用 Angular 编写一个 PWA 需要准备好从单页加载中离线 Service Worker 生命周期的文档指定 Worker 已安装但不会立即激活 https developers google com web fundament
  • 如何从 Angular 7 中的另一个组件更新视图?

    我想从导航栏刷新我的卡集 该导航栏是应用程序组件 html所以我准备了刷新 功能 当它被调用时 它会更新变量 Cards 但不会将其呈现在ngFor在 html 元素上mainView html 如果我从 html 元素调用 它会渲染更新的
  • 单击上一页的按钮路由到该页面后如何刷新页面

    我有 2 个页面 一个主页和一个页面 2 当我单击主页上的按钮时 它会路由到 page2 现在 单击主页上的按钮后 当我到达第 2 页时 它应该刷新 因为我的项目中存在一些缓存问题 我在ngoninit上添加了window location
  • 以角度选择项目后保持菜单打开

    单击我的菜单后 我的菜单将关闭toggleShare按钮 我怎样才能防止这种情况 我将 angularJS 与 Angular 材料一起使用 这是我的代码
  • 拖动元素时是否禁用 mousemove 事件?

    我试图通过在拖动元素时观察文档上的 mousemove 事件来移动元素 使用 html5 拖放 我在文档的父元素上添加了一个 mousemove 侦听器 每当我移动鼠标时都会触发该监听器 但是一旦我开始拖动另一个子元素 我就不再看到 mou
  • 如何在Angular2中正确使用依赖注入(DI)?

    我一直在试图弄清楚 DI 依赖注入在 Angular2 中是如何工作的 每次当我尝试将服务 或类注入我的组件时 我都会遇到很多问题 从不同的谷歌搜索文章中 我需要使用providers 在组件配置中 或者有时我需要使用 Inject 在我的
  • 如何在每个组件完成加载后在 Angular 2 中运行 jquery 函数

    我已经尝试了所有生命周期挂钩 但无法实现所需的结果 我需要的结果是触发一个函数 该函数在加载每个元素 组件 后初始化用于单个页面上不同元素的许多 jquery 插件 假设你有这个结构 主页 滑块 小部件 产品旋转器 ETC 这些元素中的每一
  • 导航嵌套组件时创建面包屑 (Angular 2)

    我正在为此苦苦挣扎 这个想法是有一个组件 当浏览子视图时更新面包屑 例如
  • Angular 8 Native Typescript 无崩溃,访问器简写

    角8 我曾经在打字稿方面用作简短的黑客 object accessor accessor accessor to get object accessor accessor accessor 如果其中一个子级为空 则不会冒抛出错误的风险 根据
  • 如何在 Angular @Input 中仅接受预定义值

    我的问题是 我在 a 中收到一个字符串值作为组件的参数 但我想限制可以用作参数的值 就像enum I use Input type string 但是在组件中 一切都可以引入type正如我之前所说 我需要将其限制为 3 个选项 例如Enum
  • Rxjs、fromEvent处理多个事件

    在 rxjs 5 1 中处理同一 DOM 节点上的多个事件的最佳方法是什么 fromEvent element event name 但我一次只能指定一个事件 我要手柄scroll wheel touchmove touchend even
  • angular2 MdDialog 未显示为弹出窗口

    所以我尝试使用 MdDialog 来显示错误消息 不幸的是 它不是显示为弹出窗口 而是显示为页面底部的块 我需要查看或更改哪些内容才能使其正常工作 下面的代码 common modal component html h2 title h2
  • 如何使用有角度的材料创建卡片网格?

    我正在尝试使用 ng repeat 创建每行三张卡片的网格 我有一个普通的 javascript 对象数组附加到范围 下面的代码将为每张卡创建一个新行 div div
  • 如何在父视图和子视图中使用组件两次(DI 是共享的,comp 是单例)

    我有一个按钮组件 具有应用程序特定行为 我打算在应用程序中广泛使用它 问题是 当我有一个使用此按钮的父 子视图时 单击父按钮会触发子视图按钮的 操作 如果不这样做 您自然不会明白发生了什么有多年的面向对象编程经验 让年轻的学校新手使用 da
  • 在哪里存储角度中的 JWT 令牌?

    我正在使用 Django 和 Angular 构建一个应用程序 目前 我正在本地存储上存储后端发出的 JWT 但是 我担心 XSS 攻击 我应该使用仅 HTTP 的 cookie 来存储令牌吗 我还考虑将令牌存储在我的身份验证服务类中的变量
  • 模板解析:找不到管道

    我收到错误 模板解析错误 找不到管道 amDateFormat 这是我的app module ts import NgModule from angular core import MomentModule from angular2 mo

随机推荐

  • 如何让用户从控制台输入任意数量的变量

    这是我编写的代码 用于掷两个骰子 直到出现一对 我的问题是 有没有办法让用户输入他 她想要的任意数量的骰子 我不想创建 50 个 int 骰子 如果我使用数组或列表 我也会遇到同样的问题 我必须将每个数组部分分配给 numbergen 50
  • 使用嵌入式 Jetty 在 WAR 之外提供静态内容

    我有一个 WAR 通过嵌入式 Jetty 提供服务 我想包含静态文件战争之外 我的目标是 从 WAR 外部的路径 相对于嵌入式 Jetty 运行的目录 提供静态文件 所以 如果我调用 jar srv app 我想配置一个 URLhttp m
  • 使用 Wicket + Spring + Hibernate 的三层分层应用程序。您将如何处理交易?

    我正在考虑使用在视图中打开会话 OSIV Spring 附带的过滤器或拦截器 因为对于我作为开发人员来说这似乎是一种方便的方法 如果这是您的建议 您是否建议使用过滤器或拦截器 为什么 我也想知道它将如何与Hibernate模板如果我将失去将
  • 反应本机 - 反应上下文,如图标操作

    我目前使用反应上下文存储我的用户 每个用户可以喜欢任意数量的帖子 我的后端有一个名为 isLiked 的参数 对于每个用户的每个帖子来说 该参数可以为 true 或 false 这是我的代码 我尝试了一个解决方案 我的问题是 当我按下概述的
  • Node.js:是否有关于 process.env 变量的任何文档

    I use process env在我的程序中 这个变量似乎与我的程序无关 没有它我的应用程序也可以正常运行 那么如何才能充分利用process env 有相关的文档或者教程吗 试试这个链接http nodejs org api proce
  • 输入材料芯片——初始形式数组

    我想用输入数据初始化我的垫芯片输入 但是当我有两个芯片时 它仅形成一种形式 组件 ts Component selector app pps dialog templateUrl pps dialog component html expo
  • 将 pandas 日期时间月份转换为字符串表示形式

    我想要一个带有时间戳列的 pandas DataFrame 并且想要创建一个仅包含月份的列 我想要月份列包含月份的字符串表示形式 而不是整数 我做了这样的事情 df Dates pd to datetime df Dates df Mont
  • pythonlogging.FileHandler默认使用块缓冲吗?

    The logging处理程序类有一个flush 方法 并看着code https github com python cpython blob 2 7 Lib logging init py logging FileHandler调用时不
  • bash: /bin/tar: 使用 tar 压缩多个文件时参数列表太长

    我正在尝试使用以下命令压缩存档中的文件 tar czvf compress file tar gz cat file list txt 我有一个错误 bash bin tar Argument list too long 文件编号太长 如何
  • 在Android中生成并打印特定尺寸的PDF

    我正在使用 Android 应用程序 我想生成并打印 PDF 但我遇到了一些麻烦 我需要生成PDF与 80 毫米width 以及height可能会有所不同 我正在尝试这个 public class PDFGenerator implemen
  • 为位于系统托盘中的 Java 程序创建键盘挂钩

    基本上我有一个在系统托盘中运行的java程序 并且想添加它 因此如果用户按下CTRL SHIFT 1 它会选择位于托盘中的java程序的右键单击选项之一 我想我正在寻找的是有关执行此操作的教程 或者最简单的方法是什么 我以前从未做过这样的事
  • 删除不在远程的分支

    gt git branch a master test remotes origin master remotes origin test 当有人删除remotes origin test 我的电脑上仍然可以看到它 我知道我可以做到这一点并
  • Java 正则表达式 (java.util.regex)。搜索美元符号

    我有一个搜索字符串 当它包含美元符号时 我想捕获此后的所有字符 但不包括点或后续的美元符号 后者将构成后续匹配 因此 对于这些搜索字符串中的任何一个 bla V N XYZ bla bla V N XYZ 我想返回 V N XYZ 如果搜索
  • 让 CMake include_directories SYSTEM dirs 前缀带有等于字符 (=)

    有没有办法让CMakeinclude directories使用 equals 包含系统目录前缀 特点 这样我就可以让 gcc 为关联的目录添加前缀 isysroot交叉编译的标志 当我尝试使用 equals 前缀 假定相对路径和当前源路径
  • 从 C# 应用程序打开 txt 文件

    以下代码假设从我的 C 应用程序打开 CMD 并打开文件 text txt 我尝试将文件路径设置为环境变量 但是当记事本打开时 它会查找 file txt 而不是 text txt 知道为什么吗 System Diagnostics Pro
  • 命名空间“React”没有导出成员“FC”。在“@types/reactour”中

    我正在一个反应 应用程序中工作 我有我的包 json文件如下 dependencies storybook addon backgrounds 3 4 8 storybook react 4 0 0 alpha 4 types d3 5 0
  • Jekyll自动重新加载

    第一次使用 Jekyll 看起来像是自动重新加载功能 运行jekyll auto server 仅由 Markdown 文件更新触发 这是正常行为吗 有什么方法可以更改其他类型的文件 例如 css 我使用的是 scss 或 html 文件
  • IIS 作为反向代理 - 压缩来自后端服务器的重写响应

    我正在实现一个反向代理 用于将请求路由到后端服务器 从功能上讲 一切正常 但我担心来自后端服务器的所有响应都会在未经压缩的情况下传输到客户端 Web 浏览器 设置如下 内部域上的后端服务器 不可公开访问 在以下位置托管 Web 应用程序ht
  • 使用 Javascript 在 Photoshop 中保存文件而不提示?

    我正在使用一个简单的脚本来编辑现有图像 无论我做什么 总会出现保存提示 我希望这是 100 自动化的 save 给我一个 saveAs 提示 将其保存为副本 close SaveOptions SAVECHANGES 只是给我一个通用的 您
  • NullInjectorError:没有 MatDialog 的提供者 - 尝试为 MatDialog 创建包装服务

    我是编码新手 也是 Angular 新手 所以我想我会寻求一些帮助 这是我的第一个问题 所以请耐心等待 我想为 Angular Material Dialog Service 创建一个包装服务 我只是想自学 这不是用于生产应用程序 所以我在