У меня есть раскрывающийся список с названием приложения и другой раскрывающийся список с именем навигация. Все элементы навигации имеют соответствующий идентификатор приложения, который можно отфильтровать на основе приложения, выбранного в первом раскрывающемся списке.
Как передать идентификатор приложения из раскрывающегося списка приложения компоненту навигации?
Я пытался использовать @Input ('value') appId: number; в navigation.component.ts, чтобы получить app.Id из компонента приложения, но это не сработало.
Вот мой код:
app.component.html
<app-application></app-application>
<br/>
<app-navigation></app-navigation>
application.component.html
<mat-form-field>
<mat-select placeholder="applications">
<mat-option *ngFor="let app of apps" [value]="app.Id">
{{app.ApplicationName}}
</mat-option>
</mat-select>
</mat-form-field>
application.component.ts
import { Component, OnInit, AfterViewInit } from '@angular/core';
import { ApplicationService } from '../application.service';
import { IApplication } from '../IApplication';
@Component({
selector: 'app-application',
templateUrl: './application.component.html',
styleUrls: ['./application.component.css']
})
export class ApplicationComponent implements AfterViewInit {
apps: Array<IApplication>;
constructor(private applicationService: ApplicationService) { }
ngAfterViewInit() {
this.applicationService
.getApplications()
.subscribe(data => {this.apps = data; } );
}
}
navigation.component.html
<mat-form-field>
<mat-select placeholder="navigations">
<mat-option *ngFor="let nav of navigations" [value]="nav.Id">
{{nav.NavName}}
</mat-option>
</mat-select>
</mat-form-field>
navigation.component.ts
import { Component, OnInit, AfterViewInit, Input } from '@angular/core';
import { NavigationService } from '../navigation.service';
import { INavigation } from '../INavigation';
@Component({
selector: 'app-navigation',
templateUrl: './navigation.component.html',
styleUrls: ['./navigation.component.css']
})
export class NavigationComponent implements AfterViewInit {
appId = 1;
//@Input('value') appId: number;
navigations: Array<INavigation>;
constructor(private navigationService: NavigationService) { }
ngAfterViewInit() {
this.navigationService
.getNavigations(this.appId)
.subscribe(data => {this.navigations = data; });
console.log(this.appId);
}
}