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