Angular2: в чем разница между разрешением и данными в путях маршрутизации?

Я вижу, что есть 2 способа передачи простых данных, таких как строки, в разные компоненты из путей маршрутизации:

Первый способ:

Сторона маршрутизации:

export const AppRoutes: Routes = [
  ...
  { 
    path: '/one', component: OneComponent, resolve: { foo: 'foo' }
  }
];

Сторона компонентов:

@Component()
export class OneComponent implements OnInit {
    constructor(private route: ActivatedRoute) {}

    ngOnInit() {
        this.foo = this.route.snapshot.data['foo'];
    }
}

Второй способ:

Сторона маршрутизации:

const routes: RouterConfig = [
    ...
    {
      path: '/one', component: OneComponent, data : {some_data : 'some value'}
    }
];

Сторона компонентов:

@Component()
export class OneComponent implements OnInit {
    constructor(private route: ActivatedRoute) {}

    ngOnInit() {
        this.obs = this.route
          .data
          .subscribe(v => console.log(v));
    }

    ngOnDestroy() {
        this.obs.unsubscribe();
    }
}

Итак, как лучше всего передавать значения компонентам? В чем разница между свойствами resolve и data?


person smartmouse    schedule 21.10.2016    source источник
comment
см. этот stackoverflow.com/a/36030932/5043867 и stackoverflow.com/a/36498736/5043867   -  person Pardeep Jain    schedule 21.10.2016
comment
Разве RouteParams не устарело?   -  person smartmouse    schedule 21.10.2016
comment
да, я думаю, что это устарело в бета-версии angular2   -  person Pardeep Jain    schedule 21.10.2016


Ответы (1)


data — это статические данные, добавленные в маршрут, а разрешение вызывает службу, которая может вычислять данные, также используя асинхронные вызовы.

Ваш пример resolve недействителен.

См. https://angular.io/docs/ts/latest/guide/router.html#!#resolve-guard

person Günter Zöchbauer    schedule 21.10.2016
comment
Спасибо за ваш ответ! Так в чем же разница между использованием resolve и вызовом service из компонентов, которым это нужно? - person smartmouse; 21.10.2016