【问题标题】:Can't resolve all parameters for ToastrService: (?, [object Object], [object Object], [object Object], [object Object])无法解析 ToastrService 的所有参数:(?, [object Object], [object Object], [object Object], [object Object])
【发布时间】:2018-03-15 15:34:36
【问题描述】:

我在我的角度组件中应用 toasterjs。这是我的代码。 我已经使用代码导入了ToastrService

import { ToastrService } from 'ngx-toastr';

并在构造函数中注入该服务

constructor(private toastrService: ToastrService) {    
}

this.toastrService.success('You are awesome!', 'Success!',)

但它给出了以下错误:

无法解析 ToastrService 的所有参数:(?, [object Object], [object Object], [object Object], [object Object])

当我转到它的定义时,它需要 4 个参数。以下是参数:

success(message?: string, title?: string, override?: Partial<IndividualConfig>): ActiveToast;

我也添加了模块:

imports: [
    ToastrModule.forRoot(),
    CommonModule,
    HttpModule,
    FormsModule,
    ReactiveFormsModule,
    TextboxModuleShared,
    DateTimeModuleShared,
    DropdownModuleShared
],

那么我如何使用参数,因为我只想显示成功消息?

【问题讨论】:

  • this.toastrService.success('你太棒了!','成功!') not this.toastrService.success('你太棒了!','成功!',)

标签: angular toastr angular-toastr


【解决方案1】:

您在应用的 NgModule 中以错误的顺序导入了 ToastrModule。应该按照documentation指示的顺序导入:

@NgModule({
  imports: [
    CommonModule,
    BrowserAnimationsModule, // required animations module
    ToastrModule.forRoot(), // ToastrModule added
  ],
  bootstrap: [App],
  declarations: [App],
})
class MainModule {}

如果此应用在浏览器中运行,如here 所示,您还应该将CommonModule 替换为BrowserModule

请注意,调用success 函数时不会发生错误,而是调用ToastrService 的构造函数时不会发生错误。您的错误消息明确指出并非 ToastrService 构造函数的所有参数都可以解析。其中一些参数无法解析,因为尚未创建这些参数的实例。要了解它是如何工作的,您应该阅读 documentation 关于 Angular 框架内的依赖注入。

【讨论】:

  • 我也添加了模块,但仍然发生同样的错误
  • @Gaurav_0093 能否提供添加模块的代码?
  • 是的 NgModule({ bootstrap: [ AppComponent ], imports: [ ServerModule, AppModuleShared, ToastrModule.forRoot() ] })
  • @Gaurav_0093 这是服务器的模块,而不是客户端的模块。你能提供给客户一份吗?
  • 请看看这里的问题是我编辑的模块
【解决方案2】:

需要考虑的要点: 我面临同样的问题。所以这里我如何得到解决方案

  • 安装“ngx-toastr”包并使用“toastr.css”更新 angular.json 文件后

  • 应使用 ng-serve 命令重新运行 angular,因为更改 angular.json 文件不会呈现应用程序

【讨论】:

    【解决方案3】:

    尝试导入“注入”装饰器,然后在构造函数中装饰参数,作为参数,您应该像这样添加 ToastrService:

    constructor(@Inject(ToastrService) private toastyService: ToastrService ) { }

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2019-11-13
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2018-05-10
      • 2018-04-12
      • 1970-01-01
      相关资源
      最近更新 更多