распознаватель с параметром метода разрешения - PullRequest
0 голосов
/ 17 мая 2018

Итак, я реализовал резольвер в угловых 5:

@Injectable()
    export class AppResolver implements Resolve<MyComplexObject []> {
        constructor(private myService: MyService) {

        }
        resolve(route: ActivatedRouteSnapshot, state: RouterStateSnapshot): Observable<MyComplexObject[]> {
            return this.myService.getMyApi(myOption); // my option is a string
        }
    }

прямо сейчас myOption - это жестко закодированная строка, и я хочу изменить это

в моем модуле маршрутизации у меня есть:

resolve: {
        myResolver: AppResolver
      }

Полагаю, возможно, здесь мне следует указать значение строки myOption, но как?

или еще лучше, где я на самом деле называю распознаватель

this.route.data.map(data => data.myResolver).subscribe(
      result => {
        // do something with the result (specify who the myOption is?? How)
    });

параметр не обязательно отображается в браузере:

это будет часть URL: /.../.../myString/..

но он не представлен параметром: url: /..&myParam=paramValue

поэтому я не могу использовать myParam, чтобы идентифицировать его по URL и заменить его

1 Ответ

0 голосов
/ 17 мая 2018

Вот пример отправки data на resolver,

Конфигурация маршрута:

{
  path: 'project/:id',
  component: ProjectComponent,
  resolve: { data: AppResolver },
  data: { resolvedata: 'myValue' }
}

Resolver:

@Injectable()
export class AppResolver implements Resolve<MyComplexObject []> { 
  constructor(private myService: MyService, private router: Router) {} 
  resolve(route: ActivatedRouteSnapshot): Observable<MyComplexObject[]>|boolean { 
    let myParam = route.data['resolvedata']; 
    console.log(myParam); 
  } 
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...