Я работаю над угловым проектом. Мне нужно передать массив из одного компонента в другой с помощью router.navigate, но не могу это сделать - PullRequest
1 голос
/ 03 июня 2019

Я работаю над Angular 6. Я пытаюсь передать массив из компонента AAA в компонент BBB с помощью метода router.navigate. В компоненте BBB я пытаюсь получить массив с помощью моментального снимка, но не могу получить массив.

Компонент AAA

export class AAA implements OnInit {
private testCases: TestCase[] = [];

constructor(private router: Router) { }

ngOnInit() {
}

onSubmit(form: NgForm) {
const value = form.value;
console.log("form values: "+value.testid);
const newTestCase = new TestCase(value.testid, value.testPriority, 
value.testSummary);
console.log(newTestCase);
this.testCases.push(newTestCase);
console.log(this.testCases);
this.navToTable(this.testCases);
}

navToTable(testCase: TestCase[]) {
this.router.navigate(['table', {testCase}]);
}
}    

Компонент BBB

export class BBB {
constructor(private route: ActivatedRoute) { 
this.testCase = this.route.snapshot.params['testCase'];
console.log(this.testCase);  
}

printing output as [object object]

Ответы [ 2 ]

0 голосов
/ 03 июня 2019

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

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

Resolvers также может работать, но я бы использовал сервисное решение, если по какой-либо причине невозможно передать идентификаторы.

0 голосов
/ 03 июня 2019

Связь между двумя маршрутизируемыми компонентами обычно означает, что вы передаете идентификатор или строку через URL.

Передача целого массива - плохая практика, если не сказать ужасная.

Вместо этого рассмотрим взаимодействия компонентов (подсказка: вы также можете использовать resolver в сочетании со службой, которая предлагает больше возможностей, когда речь идет о маршрутизации)

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...