У меня есть приложение angular 9 с сервисом, открывающим закусочную.
, и у меня есть элемент angular, встроенный в мое приложение.
Я пытаюсь позволить элементу angular использовать это сервис, поэтому я внедрил его в «платформу».
Проблема в том, что зависимость этого сервиса (MatSnackBar) предоставляется в MatSnackBarModule, который импортируется в мой AppModule, поэтому я получаю NullInjectorError: Нет провайдера для MatSnackBar.
вот мой код:
import { Injectable } from '@angular/core';
import {
MatSnackBar, MatSnackBarConfig, MatSnackBarRef, SimpleSnackBar
} from '@angular/material/snack-bar';
@Injectable({ providedIn: 'platform' })
export class ToasterService {
private ref: MatSnackBarRef<SimpleSnackBar>;
constructor(private snackbar: MatSnackBar) { }
commonConfig: MatSnackBarConfig = {
duration: 3000,
verticalPosition: 'top',
horizontalPosition: 'left'
};
error(message: string) {
this.open(message, 'error');
}
success(message: string) {
this.open(message, 'success');
}
private open(message: string, panelClass: string) {
this.ref = this.snackbar.open(
message, null, { ...this.commonConfig, panelClass }
);
}
}
и вот ошибка, которую я получил
main.ts:14 NullInjectorError: R3InjectorError(AppModule)[ToasterService -> ToasterService -> ToasterService -> MatSnackBar]:
NullInjectorError: No provider for MatSnackBar!
at NullInjector.get (http://localhost:4200/vendor.js:67430:27)
at R3Injector.get (http://localhost:4200/vendor.js:81146:33)
at injectInjectorOnly (http://localhost:4200/vendor.js:67285:33)
at Module.ɵɵinject (http://localhost:4200/vendor.js:67295:57)
at Object.ToasterService_Factory [as factory] (http://localhost:4200/main.js:296:147)
at R3Injector.hydrate (http://localhost:4200/vendor.js:81382:63)
at R3Injector.get (http://localhost:4200/vendor.js:81134:33)
at R3Injector.get (http://localhost:4200/vendor.js:81146:33)
at R3Injector.get (http://localhost:4200/vendor.js:81146:33)
at NgModuleRef$1.get (http://localhost:4200/vendor.js:98478:33)
PS эта ошибка возникает даже без элемента angular, но также и при добавлении обычного компонента этот сервис.
PS эта ошибка возникает только тогда, когда я предоставляю сервис в «платформе». Если я предоставляю услугу в 'root', все работает нормально.
Не подходит ли данная функция в 'платформе' для этой ситуации?
Есть ли способ обойти эту проблему?
Кто-нибудь знает другой способ добиться того, что я пытаюсь?
Большое спасибо!