У меня есть боковая панель с кнопкой, которая при нажатии меня хотела бы переключить переменную true или false, которая затем отображает/скрывает компонент sibling. Я получаю сообщение об ошибке Type '{}' is not assignable to type 'boolean'
. Как я могу достичь этого правильно?Открыть близкий родственный компонент
боковой панели-menu.component.ts
import { Component, EventEmitter, Output } from '@angular/core';
@Component({
selector: 'sidebar-menu',
templateUrl: './sidebar-menu.component.html',
styleUrls: ['./sidebar-menu.component.styl']
})
export class SidebarMenuComponent {
showDetails = false;
@Output()
onShowDetails: EventEmitter<boolean> = new EventEmitter();
constructor() {}
toggleDetails() {
this.showDetails = !this.showDetails;
this.onShowDetails.emit(this.showDetails);
console.log('Sidebar Toggle', this.showDetails);
}
}
details.component.ts
import { Component, Input } from '@angular/core';
@Component({
selector: 'details',
templateUrl: './details.component.html',
styleUrls: ['./details.component.styl']
})
export class DetailsComponent {
@Input() showDetails: boolean;
constructor() {
}
}
app.component.ts
import { Component } from '@angular/core';
@Component({
selector: 'app',
templateUrl: './app.component.html',
styleUrls: ['./app.component.styl']
})
export class AppComponent {
@Input() showDetails: boolean = false;
constructor() {
}
}
app.component.html
<sidebar-menu></sidebar-menu>
<details *ngIf="showDetails"></details>
<router-outlet></router-outlet>
Вы объявляете ShowDetails как EventEmitter, и сразу же после того, как в конструкторе, вы инициализировать его ложным. false не является допустимым значением переменной типа EventEmitter. Не знаете, как сообщение может быть более четким. –
Да, ясно, что я не могу использовать логическое, это очевидно. Почему бы и почему я не могу этого сделать. Как я могу нажать значение true/false между двумя компонентами. – Daimz
Используйте излучатель событий для ... испускать события. Прослушайте эти события из родительского компонента, чтобы изменить значение ввода showDetails компонента детали. –