在数组

时间:2017-05-17 17:18:18

标签: angular

我有一个网络服务获取国家和每个国家/地区内的服务,所以我想做选择选项让用户能够选择国家或服务

我想这样做

enter image description here

<select [(ngModel)]="countries"  (ngModelChange)="onChange($event)"  >
      <option *ngFor="let c of countries" [ngValue]="c">{{c.nom}} </option>
            <option *ngFor="let service of services" [ngValue]="service"> &nbsp; {{service.nom}} </option>
</select>

来自网络服务我得到这个[国家]和console.log当我点击国家时我获得国家列表和内部服务列表

数据结构如下enter image description here

使用此代码我获得国家和最后的服务:(,我认为我需要两个因为数组内部阵列,但我不知道如何做到这一点,所以任何人都可以帮助我解决这个问题,并感谢< BR />

2 个答案:

答案 0 :(得分:1)

要实现您的目标,您应该使用optgroup

例如:

<optgroup *ngFor="let obj of arr" [label]="obj.PROP">
  <option *ngFor="let nestedObj of obj.nestedArray">{{nestedObj.PROP}}</option>
</optgroup>

在您的情况下,它将如下:

<optgroup *ngFor="let c of countries" [label]="c.nom">
  <option *ngFor="let service of c.services" [ngValue]="service">{{service.nom}}</option>
</optgroup>

DEMO

答案 1 :(得分:-1)

尝试将您的国家/地区和服务映射到新数组:

QWidget

然后在你的模板中:

class hijaSub1(QtWidgets.QWidget, Ui_subVen1):
    def __init__(self, parent=None):
        QtWidgets.QWidget.__init__(self, parent=parent)
        self.setupUi(self)

    def closeEvent(self, event):
        print("X is clicked: hijaSub1")

class hijaSub2(QtWidgets.QWidget, Ui_subVen2):
    def __init__(self, parent=None):
        QtWidgets.QWidget.__init__(self, parent=parent)
        self.setupUi(self)

    def closeEvent(self, event):
        print("X is clicked: hijaSub2")

class multiVen(QtWidgets.QMainWindow):
    def __init__(self,parent=None):
        QtWidgets.QWidget.__init__(self,parent=None)
        self.ui =Ui_ventanaPrincipal()
        self.ui.setupUi(self)
        self.subV1=hijaSub1()
        self.subV2=hijaSub2()
        #Conect signals whith slots--------------------
        self.ui.buttonVentana1.clicked.connect(self.muestraVentana1)
        self.ui.buttonVentana2.clicked.connect(self.muestraVentana2)
    # slots-----------------------------------------
    def muestraVentana1(self):
        self.subV1.show() 

    def muestraVentana2(self):
        self.subV2.show()
#Close all windows whith X button of main window
#override main closeEvent        
    def closeEvent(self, event):
        self.subV1.close()
        self.subV2.close()
        event.accept()


if __name__=="__main__":
    import sys
    app=0
    app=QtWidgets.QApplication(sys.argv)
    myapp=multiVen()
    myapp.show()
    sys.exit(app.exec_())

我希望这会对你有所帮助。