Aurelia TS тянет карту с карты - PullRequest
       17

Aurelia TS тянет карту с карты

0 голосов
/ 18 декабря 2018

У меня есть Map<string, Map<string, boolean>>, определенный в моем appConfig.json, и когда я пытаюсь получить значения из карты с помощью .get (), я получаю сообщение об ошибке, что это не функция.

Это вмой appConfig.json

"rolePermissions" : [
    {"name" : "Admin", "value" : [
      {"name" : "customerList", "value" : "true"},
      {"name" : "customerDetails", "value" : "true"},
      {"name" : "addCustomerUser", "value" : "true"},
      {"name" : "editCustomer", "value" : "true"},
      {"name" : "updateBackend", "value" : "true"},
      {"name" : "createCustomer", "value" : "true"},
      {"name" : "jobsList", "value" : "true"},
      {"name" : "jobsView", "value" : "true"},
      {"name" : "jobsEdit", "value" : "true"},
      {"name" : "jobsDownload", "value" : "true"},
      {"name" : "usersList", "value" : "true"},
      {"name" : "usersEdit", "value" : "true"},
      {"name" : "usersDelete", "value" : "true"},
      {"name" : "usersCreate", "value" : "true"}
    ]}

, и я установил свойство в моем appConfig.ts как: public rolePermissions: Map>;

Вот так я получаю доступ к rolePermissions:

let rolePerms = this.appConfig.rolePermissions;

let rolePerm = rolePerms.get("Admin");

Когда я пытаюсь извлечь значение «Admin» из карты, я получаю сообщение об ошибке:

ERROR [app-router] TypeError: rolePerms.get is not a function
    at Utils.userRoleAuthorized (utils.ts:29)
    at NewCustomer.canActivate (newCustomer.ts:42)
    at iterate (index.ts:7)
    at processActivatable (index.ts:7)
    at CanActivateNextStep.run (index.ts:7)
    at next (index.ts:7)
    at Object.<anonymous> (shell.ts:58)
    at step (vendor-bundle.js:4344)
    at Object.next (vendor-bundle.js:4325)
    at vendor-bundle.js:4318
    at Promise._execute (vendor-bundle.js:824)
    at Promise._resolveFromExecutor (vendor-bundle.js:2601)
    at new Promise (vendor-bundle.js:2197)
    at __awaiter (vendor-bundle.js:4314)
    at Object.run (shell.ts:45)
    at next (index.ts:7)

1 Ответ

0 голосов
/ 18 декабря 2018

РЕДАКТИРОВАТЬ:

Я не понял, что ваш файл является json, хотя оригинальный пост все еще применяется.

Если вы не можете конвертировать *От 1008 * до Map, вам нужно обработать его как обычный массив:

rolePerms.find(x => x.name === "Admin").value

ORIGINAL:

Способ инициализации rolePermissionsэто твоя проблема.На самом деле вы создаете не Map, а массив.Поэтому функция get недоступна, поскольку get не является функцией, определенной в прототипе массива.

Вот как вам нужно это сделать:

const rolePermissions = new Map<string, Map<string, boolean>>(
    [
        [
            "Admin", new Map<string, boolean>([
                ["customerList", true],
                ["customerDetails", true],
                ["addCustomerUser", true],
                ["editCustomer", true],
                ["updateBackend", true],
                ["createCustomer", true],
                ["jobsList", true],
                ["jobsView", true],
                ["jobsEdit", true],
                ["jobsDownload", true],
                ["usersList", true],
                ["usersEdit", true],
                ["usersDelete", true],
                ["usersCreate", true]
            ])
        ]
    ]);
...