У меня есть сценарий, который я дал ниже. Я использую последнюю версию angular 9 и node js
У меня есть дочерний компонент под названием «города», в котором есть выпадающий список с важными городами, такими как, например, Ченнай, Дели, Бангалор.
У меня есть еще один дочерний компонент, который называется «области» и содержит раскрывающийся список на основе выбранного города в другом раскрывающемся списке. Например, если я выберу «Бангалор», я бы хотел отобразить «Area1» и «Area2». Если я выберу «Ченнай», то я бы хотел отобразить «area3» и «area4».
Ниже приведен код компонента приложения
<app-city></app-city>
<app-area></app-area>
Ниже приведен код приложения-города (шаблон)
<label>City: </label>
<select (change)="onCityClick()">
<option value="0">--All--</option>
<option *ngFor="let city Of cities" value={{city.cityId}}>
{{city.cityName}}
</option>
</select>
Ниже приведен код компонента города
import { Component, OnInit } from '@angular/core';
import { city } from './city';
import { CityService } from './city.service';
@Component({
selector: 'app-city',
templateUrl: './city.component.html',
styleUrls: ['./city.component.css']
})
export class CityComponent implements OnInit {
cities : Array<city> = [];
constructor(private cityService : CityService ) { }
ngOnInit(): void {
this.cities = this.cityService.getCities();
}
onCityClick(){
console.log('need to get the city id here');
}
}
Ниже приведен код городской службы
import { Injectable } from '@angular/core';
import { city } from './city'
@Injectable({
providedIn: 'root'
})
export class CityService {
constructor() { }
getCities() {
let cities : Array<city> = [];
// sample json data which retuns a collection of cities from service
const objcity = new city();
objcity.cityId = 1;
objcity.cityName = 'bangalore';
cities.push(objcity);
const objcity1 = new city();
objcity1.cityId = 2;
objcity1.cityName = 'chennai';
cities.push(objcity1);
return cities;
}
}
Ниже находится объект города
export class city{
cityId: number;
cityName: string;
}
Ниже приведен код области приложения (шаблон)
<label>City: </label>
<select (change)="onCityClick()">
<option value="0">--All--</option>
<option *ngFor="let city Of cities" value={{city.cityId}}>
{{city.cityName}}
</option>
</select>
Ниже приведен код зоны - компонент
import { Component, OnInit } from '@angular/core';
import { AreaService } from './area.service';
import { area } from './area';
@Component({
selector: 'app-area',
templateUrl: './area.component.html',
styleUrls: ['./area.component.css']
})
export class AreaComponent implements OnInit {
areas : Array<area> = [];
constructor(private areaService: AreaService) { }
ngOnInit(): void {
this.areas = this.areaService.getAreas(1);
}
onAreaClick(){
console.log('-- need to get the area id here ');
}
}
Ниже приведен код зоны обслуживания
import { Injectable } from '@angular/core';
import { area } from './area'
@Injectable({
providedIn: 'root'
})
export class AreaService {
constructor() { }
getAreas(cityId : number) {
let areas : Array<area> = [];
// @ts-ignore
// sample json data which retuns a collection of areas based on the cityId from service
const objarea = new area();
objarea.areaId = 1;
objarea.areaName = 'areaa1';
areas.push(objarea);
const objarea1 = new area();
objarea1.areaId = 2;
objarea1.areaName = 'area2';
areas.push(objarea1);
return areas;
}
}
Ниже приведен класс зоны
export class area{
areaId: number;
areaName: string
}
Задача 1. Получить выбранное значение города в событии щелчка. Задача 2. Передать Cityid службе области для получения данных на основе cityId. Задача 3. Перезагрузить раскрывающийся список областей на основе недавний выбор.
Дайте мне знать, если есть лучший подход из приведенного выше кода и как исправить проблему.