Этот вопрос довольно прост, но я не могу избавиться от него.Как изменить родительскую переменную из дочернего компонента?
У меня есть <header>
в родительском шаблоне, и мне нужно, чтобы он исчез при отображении шаблона для детей через модуль маршрутизации. Я ожидаю добавить класс в тег заголовка, чтобы скрыть его с помощью CSS. Это то, что у меня есть:
app.component.ts
import { Component } from '@angular/core';
@Component({
selector: 'app',
template: `
<header [class.hidden]="hide">
<h1>My App</h1>
<ul>
<li><a href="/home"></a></li>
<li><a href="/showoff"></a></li>
</ul>
</header>
<router-outlet></router-outlet>
`
})
export class AppComponent {
hide = false; // <-- This is what I need to change in child component
}
АПП-routing.module.ts
import { RouterModule, Routes } from '@angular/router';
import { HomeComponent } from './welcome.component';
import { ShowOffComponent } from './show.off.component';
const routes: Routes = [
{ path: '', component: HomeComponent },
{ path: 'showoff', component: ShowOffComponent },
];
export const AppRouting = RouterModule.forRoot(routes, {
useHash: true
});
show.offf.component.ts
import { Component } from '@angular/core';
@Component({
selector: 'app-showoff',
template: `
<h2>Show Off</h2>
<div>Some contents...</div>
`
})
export class ShowOffComponent {
hide = true; // <-- Here is the problem.
// I don't have any idea how to reach parent variables.
}
и для более сложных сценариев вы можете сделать услугу («LayoutService») и создайте там EventEmitter, поэтому везде, где вы хотите, вы можете использовать это событие для любого компонента. –
справа .. Существует множество способов передачи родительского ребенка в соответствии с документами в зависимости от конкретных сценариев. –
Спасибо, но аргумент 'onHide()' для родительского компонента в этом случае ничего не делает. Я протестировал его с помощью простого предупреждения как для 'setHide()', так и 'onHide()'. Когда запускается '(click)' обработчик, только 'setHide()' показывает предупреждение. И тогда я понимаю, что это невозможно реализовать с помощью модуля маршрутизации после того, как я нашел [это] (http://stackoverflow.com/questions/35878762/how-do-you-attach-an-eventemitter-output-to-a- компонент-под-маршрутизации). – Mdkusuma