【问题标题】:PrimeNG Message & Toast worked in Component but not in ServicePrimeNG Message & Toast 在组件中工作但不在服务中
【发布时间】:2020-06-07 04:39:22
【问题描述】:

我在使用 PrimeNG 框架的组件中有一个工作消息警报。

@组件

@Component({
    selector: 'app-client',
    templateUrl: './client.component.html',
    styleUrls: ['./client.component.css'],
    providers: [MessageService],
})

构造函数

private msg: MessageService,

组件方法

this.msg.add({severity:'success', summary: 'Success Message', detail:'Order submitted'});

但是一旦我转移到服务的方法并在组件中包含“ClientService”

import { ClientService } from '../../../shared/services/client.service'

在client.service.ts中导入消息

import { MessageService } from 'primeng/api';
...

@Injectable({
  providedIn: 'root'
})

ClientService 中的方法

...
this.msg.add({severity:'success', summary:'Success', detail: msg});
...

没有任何错误信息,也没有 toast 提示。我试图理解官方文档 https://www.primefaces.org/primeng/showcase/#/toast

使用 MessageService 显示消息,请确保您的 组件具有定义为提供者的可注入 MessageService 否则无法使用 Toast。

但我不知道如何“注入”消息服务。

这里的示例项目https://stackblitz.com/edit/d-toast

【问题讨论】:

  • 从客户端组件中移除提供者:[MessageService]
  • @GouravGarg 即使从组件级别删除它也不起作用。我认为它需要将“提供者”注入服务,或将“提供者”设为全局,但我无法找出正确的代码:)
  • 你能创建一个堆栈闪电战吗?
  • 提供样品
  • 根据您提供的示例,正​​如@GouravGarg 提到的:从 AppComponent 中删除第 11 行,它将起作用。 Forked Stackblitz Example 考虑使用 @Injectable({providedIn: 'root'}) 使您的 Helper Service treeshakable 并将其从 AppModule 中的 providers 数组中删除。

标签: angular primeng


【解决方案1】:

注入只是意味着在你的ClientService 你应该有这个:

constructor(private messageService: MessageService) {}

在您的组件中,您应该在 providers 数组中添加 ClientService

【讨论】:

  • 确定我确实将 { ClientService } 从 '../../../shared/services/client.service' 导入到客户端组件中,否则会出现错误,无法在 ClientService 下加载方法。 Method()... 我的情况是客户端组件中包含的服务,客户端服务的方法执行没有错误。只是“Toas”没有弹出:)
猜你喜欢
  • 2021-09-04
  • 1970-01-01
  • 2017-10-19
  • 2022-01-24
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2015-12-13
相关资源
最近更新 更多