У меня появляется предупреждение, когда я создаю библиотеку журналов, в которой есть базовый абстрактный класс.После проверки подобных проблем, большинство из них просто говорят, что я должен удалить @Injectable в базовом классе, что я уже сделал.Кстати, все мои классовые зависимости используют Inject, поскольку все они InjectionTokens
созданы в LoggingModule.forRoot()
.
logging.module.ts
@NgModule({
declarations: [],
imports: [],
providers: [],
exports: []
})
export class LoggingModule {
public static forRoot(
appName: string,
customLogger: Provider,
customLoggerDeps: Provider[] = [],
filteredLogLevels: Array<LogLevel | string> = [],
filterStrategies: Array<
(logLevel: LogLevel | string, filter: LogLevel | string) => boolean
> = []
): ModuleWithProviders {
return {
ngModule: LoggingModule,
providers: [ // provide injection tokens here based from parameters
]
};
}
}
logger.ts
export abstract class Logger {
// abstract method declarations here
}
CustomLogger.ts
@Injectable()
export class CustomLogger extends Logger {
constructor(
@Inject(APP_NAME_TOKEN) protected appName: string,
@Optional()
@Inject(FILTER_STRATEGIES)
protected filterStrategies: Array<
(logLevel: LogLevel | string, filter: LogLevel | string) => boolean
>,
@Optional()
@Inject(FILTERED_LOG_LEVELS)
protected filteredLogLevels: Array<LogLevel | string>
) {
super(appName, filterStrategies, filteredLogLevels);
}
}
Я немного запутался, почему угловой не знаю какввести эти токены.Любая помощь будет оценена.
Кстати, я использую Angular 6.1
с CLI