我有一個側邊欄和一個按鈕,單擊時我想切換變量true或false,然後顯示/隱藏兄弟組件。我收到錯誤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類型的變量不是有效的值。不確定信息如何更清晰。 –
是的,很明顯,我不能使用布爾值,這很明顯。什麼不是爲什麼,我能做些什麼呢。我如何在兩個組件之間推送真/假值。 – Daimz
使用你的事件發射器來發射事件。從父組件收聽這些事件以更改詳細信息組件的showDetails輸入的值。 –