Я пытаюсь отобразить ошибки в модальном диалоговом окне, но я новичок в Angular и застрял.
В проекте уже используется начальная загрузка, поэтому я попытался использовать NgbModal:
// in ErrorHandler
handleError(error: Error) {
//do other stuff
console.error(error);
this.modalService.open(ErrorDisplayComponent, //problems here
{
//modal options
});
}
Это приводит к ошибке:
Uncaught TypeError: Cannot read property 'open' of undefined
at NgbModal.push../node_modules/@ng-bootstrap/ng-bootstrap/fesm5/ng-bootstrap.js.NgbModal.open
Кажется, что метод open недоволен параметром ErrorDisplayComponent.
Даже если это сработало, я не знаюкак передать переменную error в ErrorDisplayComponent (но я справлюсь с этим, если я заставлю это работать).
Согласно документации (https://ng -bootstrap.github.io / # /components / modal / api ) «Содержимое [для метода open ()] может быть предоставлено как TemplateRef или тип компонента.»
Возможно, мне следует попробовать с параметром TemplateRef (но у меня нетидея, как создать TemplateRef на лету) или , возможно, этот подход неправильный, и я должен делать что-то еще .Но поскольку я даже не знаю жаргона, поиск ответа не так прост.
Есть идеи?
Заранее спасибо!
ОБНОВЛЕНИЕ:Полный код
ErrorsHandler.ts
import { ErrorHandler, Injectable, Injector} from '@angular/core';
import { NgbModal } from '@ng-bootstrap/ng-bootstrap';
import { ErrorDisplayComponent } from './errors/error-display/error-display.component';
@Injectable()
export class ErrorsHandler implements ErrorHandler {
constructor(private modalService: NgbModal) {
}
handleError(error: Error) {
//console.error(error);
this.modalService.open(ErrorDisplayComponent,
{ariaLabelledBy: 'modal-basic-title', по центру: true, размер: 'lg',windowClass: "newUserModalClass"});}}
error-display.component.ts
import { Component, OnInit } from '@angular/core';
import {NgbActiveModal} from "@ng-bootstrap/ng-bootstrap";
@Component({
selector: 'app-error-display',
templateUrl: './error-display.component.html',
styleUrls: ['./error-display.component.scss']
})
export class ErrorDisplayComponent implements OnInit {
constructor(public activeModal: NgbActiveModal) {
}
ngOnInit() {
}
onClose():void {
this.activeModal.close('closed');
}
onDismiss(reason : String):void {
this.activeModal.dismiss(reason);
}
}
error-display.component.html
<ng-template #content let-modal>
<h1>error-display works!</h1>
</ng-template>