Та же самая конфигурация, что у меня была ниже, работала нормально незадолго до одного дня и больше не работала на моей машине.Я проверил на другой машине, и она все еще работает нормально на этих машинах.Вот что я делаю.
Маршрутизация приложений:
const routes: Routes = [
{
path: AppRoutes.WorkflowRoute,
canActivate: [AuthGuardService, UserConfigsService],
data: { applicationIdentifier: ApplicationIdentifiers.Workflow, route: AppRoutes.WorkflowRoute },
loadChildren: 'app/pages/workflowexplorer/workflowexplorer.module#WorkflowexplorerModule',
}]
Служба UserConfig: (как вы можете видеть, это расширяет DataProviderService)
@Injectable({
providedIn: 'root'
})
export class UserConfigsService extends DataProviderService implements CanActivate {
private controllerName: string = '/UserConfigs/';
private userCofigs: UserCofig[];
private userConfigsUpdatedSource = new Subject<boolean>();
userConfigsUpdated = this.userConfigsUpdatedSource.asObservable();
private dataSubject = new ReplaySubject<UserCofig[]>();
canActivate(route: ActivatedRouteSnapshot, state: RouterStateSnapshot): boolean | Observable<boolean> | Promise<boolean> {
if (this.authService.isLoggedIn()) {
const applicationIdentifier = route.data['applicationIdentifier'] as number;
this.getUserConfigsForApplication(applicationIdentifier).subscribe((response) => {
this.userCofigs = <UserCofig[]>response;
}, error => console.log(`Error : ${error}`));
}
return true;
}
DataProvider:
@Injectable({
providedIn: 'root'
})
export class DataProviderService {
private baseUrl: string = '';
private apiVersion: string = '';
private commomErrorMessage: string = 'Something went wrong please try again';
constructor(public http: HttpClient,
private appConfigurationService: AppConfigurationService,
private messageDialogService: MessageDialogService,
private spinnerService: SpinnerService,
public authService: AuthService
) {
this.baseUrl = this.appConfigurationService.getPreDefineBaseUrl();
this.apiVersion = `v${this.appConfigurationService.getPreDefineApiVersion()}`;
}
Как показано в ошибке, для UserConfigsService защита установлена как DataProvideService, которая не реализует canActivate.
Вопросы:
Правильна ли эта конфигурация или я что-то упустил?
Не могу понять, почему такая же конфигурация работает на других машинах, кроме моей?
Что-нибудь, что я должен попробовать по-другому?
Обновление:
После дальнейшего изучения я обнаружил, что каждый раз, когда он внедряет UserConfigsService, возвращается объект DataProviderService.Я не уверен почему.
AppComponent запрашивает UserConfigsService, но получает DataProviderService.
Воспроизведение GitHub Link