Ich verwende @input
, um eine Eigenschaft von der übergeordneten Komponente zu erhalten, um eine CSS-Klasse in einem Element der untergeordneten Komponente zu aktivieren.
Ich kann die Eigenschaft vom Elternteil erhalten und auch die Klasse aktivieren. Das funktioniert aber nur einmal. Die Eigenschaft, die ich vom übergeordneten Element erhalte, sind boolesche Daten, die eingegeben werden. Wenn ich den Status false
von der untergeordneten Komponente auf setze , ändert sich dies nicht im übergeordneten Element.
Plunkr: https://plnkr.co/edit/58xuZ1uzvToPhPtOING2?p=preview
app.ts
import {Component, NgModule} from '@angular/core'
import {BrowserModule} from '@angular/platform-browser'
import { HeaderComponent } from './header';
import { SearchComponent } from './header/search';
@Component({
selector: 'my-app',
template: `
<app-header></app-header>
`,
})
export class App {
name:string;
constructor() {
}
}
@NgModule({
imports: [ BrowserModule ],
declarations: [ App, HeaderComponent, SearchComponent ],
bootstrap: [ App ]
})
export class AppModule {}
header.ts
import { Component, OnInit } from '@angular/core';
@Component({
selector: 'app-header',
template: `<header>
<app-search [getSearchStatus]="isSearchActive"></app-search>
<button (click)="handleSearch()">Open Search</button>
</header>`
})
export class HeaderComponent implements OnInit {
isSearchActive = false;
handleSearch() {
this.isSearchActive = true
console.log(this.isSearchActive)
}
constructor() { }
ngOnInit() { }
}
header / search.ts
import { Component, OnInit, Input } from '@angular/core';
@Component({
selector: 'app-search',
template: `<div id="search" [class.toggled]="getSearchStatus">
search
<button (click)="getSearchStatus = false" class="close">Close Search</button>
</div>`
})
export class SearchComponent implements OnInit {
@Input() getSearchStatus: boolean;
constructor() { }
ngOnInit() {
}
}
Bitte überprüfen Sie den oben angegebenen Plunker. Die offene Suchfunktion funktioniert nur einmal. Nach dem Schließen der Suche wird sie nicht erneut ausgelöst.
Ist @input
der richtige Anwendungsfall für dieses Szenario? Bitte helfen Sie mir, dies zu beheben. (Bitte aktualisieren Sie den Plunker).
true
in gesetzt wurdehandleSearch()
?