Метод resolve
должен возвращать объект того же типа, который определен в интерфейсе Resolve.
Определение интерфейса разрешения: -
interface Resolve<T> {
resolve(route: ActivatedRouteSnapshot, state: RouterStateSnapshot): Observable<T> | Promise<T> | T
}
Решение 1: -
Если вы хотите иметь конкретный тип, пожалуйста, определите базовый абстрактный класс, расширьте его различными классами и верните класс из метода resolv.
@Injectable()
export class TodoResolver implements Resolve<BaseEntity> {
constructor(private service: SomeService, private router: Router) { }
resolve(route: ActivatedRouteSnapshot, state: RouterStateSnapshot,
): Observable<ChildBaseEntity> {
let id = route.paramMap.get('id');
return this.service.somemethod('id');
}
}
export abstract class BaseEntity {};
export class ChildBaseEntity extends BaseEntity {};
Решение 2: -
Простым решением было бы изменить тип метода разрешения на Observable<any>
.
Я не уверен, что решение 2 будетприемлемо для вас, так как вы ожидаете некоторой безопасности типа.