Как сгенерировать UUID в угловых 6 - PullRequest
0 голосов
/ 16 октября 2018

Я попытаюсь добавить некоторые пакеты, связанные с UUID, например, https://www.npmjs.com/package/uuid-generator-ts и https://www.npmjs.com/package/@types/uuid. Но я получаю сообщение об ошибке, если я устанавливаю эти пакеты, скажите мне, как генерировать UUID в angular 6.

Ответы [ 2 ]

0 голосов
/ 26 марта 2019

Я знаю, что это может помочь некоторым пользователям.Это то, что я сделал в прошлом.Я создал Angular ID Service, который отслеживает все идентификаторы, которые я генерировал на протяжении всего проекта.Каждый раз, когда генерируется идентификатор, он проверяется по всем остальным идентификаторам, чтобы убедиться, что он уникален.Существует одна публичная собственность и два публичных метода.

Помните

Необходимо создать новый идентификатор в методе ngOnInit и удалить этот идентификатор в методе ngOnDestroy.Если вам не удастся удалить идентификатор, когда компонент уничтожен, массив идентификаторов станет очень большим.

Код

ids: string[]: это список всех уникальных идентификаторов, хранящихся вСервис для обеспечения уникальности.

generate(): string: этот метод генерирует и возвращает уникальный идентификатор в виде строки;Вывод: например, bec331aa-1566-1f59-1bf1-0a709be9a710

remove(id: string): void: этот метод удаляет указанный идентификатор из массива сохраненных идентификаторов.

import { Injectable } from '@angular/core';

@Injectable({
  providedIn: 'root',
})
export class IdService {
  public ids: string[] = [];

  constructor() {}

  public generate(): string {
    let isUnique = false;
    let tempId = '';

    while (!isUnique) {
      tempId = this.generator();
      if (!this.idExists(tempId)) {
        isUnique = true;
        this.ids.push(tempId);
      }
    }

    return tempId;
  }

  public remove(id: string): void {
    const index = this.ids.indexOf(id);
    this.ids.splice(index, 1);
  }

  private generator(): string {
    const isString = `${this.S4()}${this.S4()}-${this.S4()}-${this.S4()}-${this.S4()}-${this.S4()}${this.S4()}${this.S4()}`;

    return isString;
  }

  private idExists(id: string): boolean {
    return this.ids.includes(id);
  }

  private S4(): string {
    return (((1 + Math.random()) * 0x10000) | 0).toString(16).substring(1);
  }
}
0 голосов
/ 16 октября 2018

Ничего общего с самим Angular, вы можете получить uuid из одного из популярных пакетов npm, такого как:

https://www.npmjs.com/package/uuid

Код выглядит так:

import * as uuid from 'uuid';

const myId = uuid.v4();
...