如何在 Angular 中保存 multi select 中的选项?

How can I save a option from multi select in Angular?

我有一个带有单个 select 的模态,称为“Impacto OEE”,它有 3 个选项“Queda de Disponibilidade”、“Queda de Performance”和“Nenhum”。如果用户选择的选项是“Queda de Disponibilidade”,它将被保存为“Disponibilidade”,如果是“Queda de Performance”,它将被保存为“Performance”,如果是“Nenhum”,它将被保存为“Nenhum”。但是当我点击注册时,它只保存为“Disponibilidade”或“Nenhum”。在我的数据库 (PostgreSQL) 中,该列被称为“impact_oee”作为 ENUM,其值为“Disponibilidade、”Performance、“Nenhum”。

我是 Angular 的新手,但我不明白我应该怎么做才能使其正常工作,或者我做错了什么。下面是部分代码。有人可以帮助我吗?

这是我在 HTML 中的代码:

<div class="input-group">
    <isteven-multi-select directive-id="impactos" tabindex="4" class="multiselect" helper-elements="filter"
                          translation="traducaoMultiSelect"
                          input-model="impactos"
                          output-model="impacto"
                          button-label="name"
                          item-label="name"
                          tick-property="ticked"
                          ng-class="{'open':impactosOpen }"
                          on-open="impactosOpen = true"
                          on-close="impactosOpen = false"
                          selection-mode="single" />
</div>

多选配置:

$scope.impactos = [{ name: "Queda de Disponibilidade" }, { name: "Queda de Performance" }, { name: "Nenhum" }]

从我的服务器哪里获取数据:

new Promise(function (resolve, reject) {
                    restApi.motivosParadaGerenciamento.query({}, function (array) {
                        $scope.motivos = [];
                        if (array.length > 0) {
                            for (var i = 0; i < array.length; i++) {
                                $scope.motivos.push({
                                    id: array[i].id,
                                    ...

                                    impactos: array[i].impacto_oee,

                                    ...
                                });
                            }
                        }

我的注册函数:

function cadastrar () {
    restApi.gerenciamentoMotivosParada.save({
        ...
        impacto_oee: $scope.selectedUnique($scope.impactos) === "Queda de Disponibilidade" ? "Disponibilidade" : "Queda de Performance" ? "Performance" : "Nenhum",
    }, ...
}

我有一个在编辑部分使用的更新功能,当我 select“Nenhum”时它也不起作用。 “Nenhum”选项被简单地忽略了。

function atualizar () {
    var motivo;
    if ($scope.editing >= 0) {
        motivo = {
            ...         
            impacto_oee: $scope.selectedUnique($scope.impacto) === "Queda de Disponibilidade" ? "Disponibilidade" : "Queda de Performance" ? "Performance" : "Nenhum" ? "Nenhum" : "Nenhum"
           ...
        };
    } 

问题出在您的注册函数中。正确的写法如下

function cadastrar () {
    restApi.gerenciamentoMotivosParada.save({
        ...
        impacto_oee: ($scope.selectedUnique($scope.impactos) === "Queda de Disponibilidade") ? "Disponibilidade" : ($scope.selectedUnique($scope.impactos) === "Queda de Performance") ? "Performance" : "Nenhum",
    },
    ...
}

Explanation:

基本上,您要使用三元运算符实现的目标是 if-elseif-else

if (condition1) {
    //value1
} else if(condition2) {
    //value2
} else {
    //value3
}

在你的情况下,condition2 丢失了,这就是原因,它没有检查“Queda de Performance”条件