Как отправить массив в роутере? - PullRequest
0 голосов
/ 27 ноября 2018

Искал решение по другим вопросам, но ничего не помогло мне.

Я хочу перенаправить на URL, как,

this.router.navigateByUrl('/products');

В котором мне нужно передать массив и мне нужнополучить его в компоненте, который имеет активную ссылку products, используя пропустить изменение местоположения, не показывая ничего в URL.

Массив будет выглядеть так:

products = [{"id":1,"name":"Product One","id":2,"name":"Product Three","id":3,"name":"Product Six"}]

Мне нужно передать все этомассив в ссылке на маршрутизатор и необходимо получить его в другой компонент (продукты) активная ссылка с помощью skipLocation Изменить true ..

Попытка с sharedService, но у меня проблема с загрузкой данных справамомент времени и, следовательно, я решил использовать через маршрутизатор ссылку ..

Если это не очень хороший подход, пожалуйста, предложите другую альтернативу без использования sharedservice ..

1 Ответ

0 голосов
/ 27 ноября 2018

Вы можете использовать Angular Services для больших данных.

import { Injectable } from '@angular/core';
import { Observable } from 'rxjs';
import { Subject } from 'rxjs/Subject';

@Injectable()
export class ExampleService {

private subject = new Subject<any>();  

updateRouteData(data) {
    this.subject.next(data);
}

routeData(): Observable<any> {
    return this.subject.asObservable();
}
}

В ваших компонентах;

Для заданных данных маршрута;

import { ExampleService } from '/example.service'

export class ComponentOne{

constructor(private exampleService:ExampleService){
   this.exampleService.updateRouteData(data)
}

Вы можетепередать данные как;

import { ExampleService } from '/example.service'

export class ComponentTwo{

constructor(private exampleService:ExampleService){
   this.exampleService.routeData().subscribe(data => {
       console.log(data)
   })
}
...