2

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

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

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

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']; 
    } 
} 

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

Routing сторона:

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?

+0

увидеть это http://stackoverflow.com/a/36030932/5043867 и http://stackoverflow.com/a/36498736/5043867 –

+0

Не 'RouteParams' осуждается? – smartmouse

+0

Да, это было устарело в angular2 beta, я думаю –

ответ

3

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

Ваш недопустимый пример resolve.

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

+1

Спасибо за ваш ответ! Так в чем же разница между использованием 'resolve' и вызовом' service' из компонентов, которые в нем нуждаются? – smartmouse