Ionic 2 - How to show second dropdown data based on previous dropdown selection

前端 未结 1 1229
生来不讨喜
生来不讨喜 2021-01-13 05:14

I am new to Ionic 2. I\'m only have a surface basic of Ionic 2. I am trying to get a second dropdown based on the first selection. I already refer to the same problem but no

1条回答
  •  生来不讨喜
    2021-01-13 06:02

    Create a change event handler on the first select element. Then have that call a method, passing the selected value with it. Then do some checks on the selected values to determine if you want to show the next select and then the list.

    *.html ------- template
    
         
             State
             
                 {{sState.name}} 
             
         
         
            District
            
                {{sDistrict.name}}
            
         
         
             
                  

    {{city.name}}

    *.ts ------- controller/component
        public states: any[];
        public districts: any[];
        public cities: any[];
    
        public selectedDistricts: any[];
        public selectedCities: any[];
    
        public sState: any;
        public sDistrict: any;
    
        appName = 'Ionic App';
    
        constructor(public navController: NavController) { 
            this.initializeState();
            this.initializeDistrict();
            this.initializeCity();
        }
    
        initializeState(){
        this.states = [
            {id: 1, name: 'Melaka'},
            {id: 2, name: 'Johor'},
            {id: 3, name: 'Selangor'}
        ];
        }
    
        initializeDistrict(){
        this.districts = [
            {id: 1, name: 'Alor Gajah', state_id: 1, state_name: 'Melaka'},
            {id: 2, name: 'Jasin', state_id: 1, state_name: 'Melaka'},
            {id: 3, name: 'Muar', state_id: 2, state_name: 'Johor'},
            {id: 4, name: 'Segamat', state_id: 2, state_name: 'Johor'},
            {id: 5, name: 'Shah Alam', state_id: 3, state_name: 'Selangor'},
            {id: 7, name: 'Klang', state_id: 3, state_name: 'Selangor'}
        ];
        }
    
        initializeCity(){
        this.cities = [
            {id: 1, name: 'City of Alor Gajah 1', state_id: 1, district_id: 1},
            {id: 2, name: 'City of Alor Gajah 2', state_id: 1, district_id: 1},
            {id: 3, name: 'City of Jasin 1', state_id: 1, district_id: 2},
            {id: 4, name: 'City of Muar 1', state_id: 2, district_id: 3},
            {id: 5, name: 'City of Muar 2', state_id: 2, district_id: 3},
            {id: 6, name: 'City of Segamat 1', state_id: 2, district_id: 4},
            {id: 7, name: 'City of Shah Alam 1', state_id: 3, district_id: 5},
            {id: 8, name: 'City of Klang 1', state_id: 3, district_id: 6},
            {id: 9, name: 'City of Klang 2', state_id: 3, district_id: 6}
        ];
        }
    
        setDistrictValues(sState) {
            this.selectedDistricts = this.districts.filter(district => district.state_id == sState.id)
        }
    
        setCityValues(sDistrict) {
            this.selectedCities = this.cities.filter(city => city.district_id == sDistrict.id);
        }
    

    Select your state, filter for only the districts that have a state_id that matches the selected state ID. The same thing is done for the cities.

    Working version: https://embed.plnkr.co/Qu1lL6PDIX2DTDGv01ZI/

    0 讨论(0)
提交回复
热议问题