web-dev-qa-db-ja.com

angular 6でUUIDを生成する方法

UUIDに関連するいくつかのパッケージ、つまり https://www.npmjs.com/package/uuid-generator-tshttps://www.npmjs)を追加しようとします。 com/package/@ types/uuid 。しかし、これらのパッケージをインストールする場合、エラーが発生します。angular 6.でUUIDを生成する方法を教えてください。

17
XYZ

Angular自体とは関係ありません。次のような人気のあるnpmパッケージの1つからuuidを取得できます。

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

コードは次のようになります。

import * as uuid from 'uuid';

const myId = uuid.v4();
48
Xinan

これは一部のユーザーを助けるかもしれないことを知っています。これは私が過去にやったことです。プロジェクト全体で生成したすべてのIDを追跡するAngular _ID Service_を作成しました。IDが生成されるたびに、他のすべてのIDに対してチェックされます一意であることを保証するID。1つのパブリックプロパティと2つのパブリックメソッドがあります。

覚えて

ngOnInitメソッドで新しいIDを生成し、ngOnDestroyメソッドでそのIDを削除する必要があります。コンポーネントが破棄されるときにidの削除に失敗すると、ids配列は非常に大きくなります。

コード

_ids: string[]_:これは、一意性を確保するためにサービスに保存されているすべての一意のIDのリストです。

generate(): string:このメソッドは、一意のIDを生成して文字列として返します。出力:例_bec331aa-1566-1f59-1bf1-0a709be9a710_

remove(id: string): void:このメソッドは、保存されたIDの配列から指定されたIDを削除します。

_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);
  }
}
_
3
MrGrigri

@MrGrigriの例:乱数を比較して配列に保持したくない場合は、次のようにすることができ、完全なnpmパッケージは必要なく、4つのグループの数を制御できます。

/**
 * generate groups of 4 random characters
 * @example getUniqueId(1) : 607f
 * @example getUniqueId(2) : 95ca-361a-f8a1-1e73
 */
export function getUniqueId(parts: number): string {
  const stringArr = [];
  for(let i = 0; i< parts; i++){
    // tslint:disable-next-line:no-bitwise
    const S4 = (((1 + Math.random()) * 0x10000) | 0).toString(16).substring(1);
    stringArr.Push(S4);
  }
  return stringArr.join('-');
}
1
Ron Jonk