#angular #primeng
#angular #primeng
Вопрос:
Чтобы уменьшить количество основных компонентов toast (p-toast) в моем веб-приложении, я попытался использовать центральный p-toast с ключом в app.component. Затем я добавляю сообщения из других компонентов, используя messageservice с ключом этого компонента toast. К сожалению, тосты не отображаются.
мой app.component.html
<div>
<app-header></app-header>
<router-outlet></router-outlet>
<app-footer *ngIf="!userLoggedIn"></app-footer>
</div>
<p-toast [style]="{ marginTop: '80px' }" key="myToast"></p-toast>
my app.component.ts
@Component({
selector: 'app-root',
templateUrl: './app.component.html',
styleUrls: ['./app.component.scss'],
providers: [MessageService]
})
export class AppComponent implements OnInit, OnDestroy {
constructor(
private readonly messageService: MessageService
) {...
изнутри компонента (показано через routeroutlet) Я добавляю сообщение:
this.messageService.add({
severity: 'success',
summary: 'Success Message',
key: 'myToast',
detail: 'Order submitted'
});
Я также попробовал следующие альтернативы:
this.ngZone.run(() => {
this.messageService.add({
severity: 'success',
summary: 'Success Message',
key: 'myToast',
detail: 'Order submitted'
});
});
и
setTimeout(() => {
this.messageService.add({
severity: 'success',
summary: 'Success Message',
key: 'myToast',
detail: 'Order submitted'
});
}, 1000);
Ничего из этого не работает.
Я что-то забыл? Или p-toast не должен использоваться таким образом?
Ответ №1:
Вам просто нужно изменить еще несколько вещей
1) Добавьте ToastModule в список импорта AppModule
2) Добавьте MessageService в список поставщиков AppModule
3) Удалите MessageService из массива providers в любом другом компоненте, вы все равно можете импортировать MessageService и выполнять this.messageService.add
из любого компонента
Тогда попробуйте