Angular 8getRoleはネストされたオブジェクトの関数ではありません

Tomas Lukac

Profile情報を返すAPIがあり、HTTPサービスで取得しています。ネストされたオブジェクトUserにはメソッドがありgetRole()ます。しかし、このメソッドを呼び出そうとすると、

エラーTypeError:_co.profile.user.getRoleは関数ではありません

エンティティUserのみを返す他のサービスからフェッチUserすると、この関数を問題なく呼び出すことができます。

何が足りないのですか?

モデル

export class Profile {
  user: User;
  apiKeys: ApiKey[];
}

export class User {
  user: string;
  firstname: string;
  surname: string;
  email: string;
  role: Role;
  active: boolean;

  getRole() {
    switch (this.role) {
      case Role.READ: {
        return "READ";
      }
      case Role.WRITE: {
        return "WRITE";
      }
      case Role.ADMIN: {
        return "ADMIN";
      }
      default : {
        return "READ";
      }
    }
  }
}

ProfileService.ts

getProfile(): Observable<Profile> {
    return this.http.get<Profile>(this.profileUrl).pipe(catchError(this.handleError));
}

Component.ts

profile: Profile;
isProfileAvailable:boolean = false;

ngOnInit() {
  this.settingsService.getProfile().subscribe(profile => {
    this.profile = profile;
    this.isProfileAvailable = true;
   });
}

Component.html

<p-fieldset [legend]="Profile" *ngIf="isProfileAvailable">
    <div><b>User: </b>{{profile.user.firstname}}</div>
    <div><b>E-mail: </b>{{profile.user.email}}</div>
    <div><b>Role: </b>{{profile.user.getRole()}}</div>
</p-fieldset>
ブラウハーリー

呼び出しhttp.get<Profile>は型のオブジェクトを自動的に初期化しないProfileため、プロパティuserも型のオブジェクトでUserはなく、メソッドを取得していませんgetRole

Object.assign使用して、オブジェクトとそのプロパティを初期化できます。また、2つのクラスタイプ(ProfileUser)があるため、両方をBase-Classから拡張して、両方のタイプのプロパティの割り当てを処理できます。

モデル:

// Use a Base class to assign all properties with objects both of type Profile and User
class Base {
    constructor(properties?: any) {
        (Object as any).assign(this, properties);
    }
}

export class User extends Base {
    user: string;
    firstname: string;
    surname: string;
    email: string;
    role: Role;
    active: boolean;

    getRole() {
        switch (this.role) {
            case Role.READ: {
                return "READ";
            }
            case Role.WRITE: {
                return "WRITE";
            }
            case Role.ADMIN: {
                return "ADMIN";
            }
            default : {
                return "READ";
            }
        }
    }  
}

export class Profile extends Base {
    user: User;
    apiKeys: ApiKey[];

    // take advantage of Object.assign
    // to initialize an instance of type Profile 
    // along with it's property user
    constructor(properties?: any) {
        super(properties);
        this.user = new User(properties.user);
    }
}

ProfileService.ts

getProfile(): Observable <Profile> {
    return this.http.get<Profile>(this.profileUrl).pipe(catchError(this.handleError));
}

Component.ts

profile: Profile;
isProfileAvailable:boolean = false;

ngOnInit()
{
    this.settingsService.getProfile().subscribe(profileData => {
        // assuming that profileData looks like this:
        /*
        {
            user: {
                user: 'user',
                firstname: 'firstname',
                surname: 'surname',
                email: 'email',
                active: true
            }
        }
        */
        this.profile = new Profile(profileData);
        this.isProfileAvailable = true;
    });
}

この記事はインターネットから収集されたものであり、転載の際にはソースを示してください。

侵害の場合は、連絡してください[email protected]

編集
0

コメントを追加

0

関連記事

分類Dev

Angular Service-返されるオブジェクトのタイプはオブジェクトであり、指定されたジェネリックタイプのタイプではありません

分類Dev

Angular jsitem.pushはオブジェクトではありません

分類Dev

Undefinedはオブジェクトではありません-Angular $ rootScope.user.userMessage

分類Dev

Angular2 ngfor: undefined はオブジェクトではありません

分類Dev

Angular4ネストされたオブジェクトはnull値エラーを読み取ることができません

分類Dev

Fomantic-AngularプロジェクトのUI:「。popupは関数ではありません」

分類Dev

TypeErrorが発生する理由:undefinedはAngularのオブジェクト( ''を評価)ではありませんか?

分類Dev

AngularはGMapオブジェクト内で更新されません

分類Dev

Typescript(Angular 8)でsubscribe()が呼び出されたときに返されたオブジェクトの値にアクセスできません

分類Dev

Angular8ネストされたオブジェクトの補間

分類Dev

サブスクライブ応答で初期化されたタイプItemのAngular4コンポーネント変数には、Itemクラスで定義されたメソッドがありません

分類Dev

Angular 8、起動時のIE11エラーFunction.prototype.toString: 'this'はFunctionオブジェクトではありません

分類Dev

Angular:子コンポーネントで渡されたオブジェクトのプロパティを更新すると、親コンポーネントが更新されますが、その値は更新されません。なぜですか?

分類Dev

Angular:子コンポーネントで渡されたオブジェクトのプロパティを更新すると、親コンポーネントが更新されますが、その値は更新されません。なぜですか?

分類Dev

Angular 2Jasmineが未定義で失敗することはオブジェクトではありません

分類Dev

オブジェクト番号は、Date、Angular 2フォーム、typescriptのインスタンスではありません

分類Dev

Angularダイジェスト-TypeError:v12は関数ではありません

分類Dev

Angular/Karma/Jasmine - undefined はオブジェクトではありません (「commLogger.SetLogLevel」を評価)

分類Dev

Angular2サービスユニットテストがTypeErrorで失敗する:undefinedはオブジェクトではありません

分類Dev

ngForを使用してAngularでネストされたjsonオブジェクトの不明な数をループする方法は?

分類Dev

Angular Mat AutoCompleteは、バックエンドから返されたオブジェクトのドロップダウンリストを表示/表示しません

分類Dev

サブジェクトにサブスクライブされたAngularコンポーネントはイベントを受信しません

分類Dev

Angular付きのブートストラップ「エラー:$(...)。collapse()は関数ではありません」

分類Dev

Angular2「this」はネストされた関数のグローバル変数にアクセスできません

分類Dev

「「formControlAnimalSelect」のプロパティ「validator」に割り当てることができません:オブジェクトではありません」Angular Typescript

分類Dev

Angularコンパイルエラー:NG6001:クラスはNgModule'AppModule 'の宣言にリストされていますが、ディレクティブ、コンポーネント、またはパイプではありません

分類Dev

ネストされたオブジェクトを持つAngular

分類Dev

Angularでネストされたオブジェクトのプロパティにアクセスするにはどうすればよいですか?

分類Dev

エクスポートされたメンバーAngularはありません

Related 関連記事

  1. 1

    Angular Service-返されるオブジェクトのタイプはオブジェクトであり、指定されたジェネリックタイプのタイプではありません

  2. 2

    Angular jsitem.pushはオブジェクトではありません

  3. 3

    Undefinedはオブジェクトではありません-Angular $ rootScope.user.userMessage

  4. 4

    Angular2 ngfor: undefined はオブジェクトではありません

  5. 5

    Angular4ネストされたオブジェクトはnull値エラーを読み取ることができません

  6. 6

    Fomantic-AngularプロジェクトのUI:「。popupは関数ではありません」

  7. 7

    TypeErrorが発生する理由:undefinedはAngularのオブジェクト( ''を評価)ではありませんか?

  8. 8

    AngularはGMapオブジェクト内で更新されません

  9. 9

    Typescript(Angular 8)でsubscribe()が呼び出されたときに返されたオブジェクトの値にアクセスできません

  10. 10

    Angular8ネストされたオブジェクトの補間

  11. 11

    サブスクライブ応答で初期化されたタイプItemのAngular4コンポーネント変数には、Itemクラスで定義されたメソッドがありません

  12. 12

    Angular 8、起動時のIE11エラーFunction.prototype.toString: 'this'はFunctionオブジェクトではありません

  13. 13

    Angular:子コンポーネントで渡されたオブジェクトのプロパティを更新すると、親コンポーネントが更新されますが、その値は更新されません。なぜですか?

  14. 14

    Angular:子コンポーネントで渡されたオブジェクトのプロパティを更新すると、親コンポーネントが更新されますが、その値は更新されません。なぜですか?

  15. 15

    Angular 2Jasmineが未定義で失敗することはオブジェクトではありません

  16. 16

    オブジェクト番号は、Date、Angular 2フォーム、typescriptのインスタンスではありません

  17. 17

    Angularダイジェスト-TypeError:v12は関数ではありません

  18. 18

    Angular/Karma/Jasmine - undefined はオブジェクトではありません (「commLogger.SetLogLevel」を評価)

  19. 19

    Angular2サービスユニットテストがTypeErrorで失敗する:undefinedはオブジェクトではありません

  20. 20

    ngForを使用してAngularでネストされたjsonオブジェクトの不明な数をループする方法は?

  21. 21

    Angular Mat AutoCompleteは、バックエンドから返されたオブジェクトのドロップダウンリストを表示/表示しません

  22. 22

    サブジェクトにサブスクライブされたAngularコンポーネントはイベントを受信しません

  23. 23

    Angular付きのブートストラップ「エラー:$(...)。collapse()は関数ではありません」

  24. 24

    Angular2「this」はネストされた関数のグローバル変数にアクセスできません

  25. 25

    「「formControlAnimalSelect」のプロパティ「validator」に割り当てることができません:オブジェクトではありません」Angular Typescript

  26. 26

    Angularコンパイルエラー:NG6001:クラスはNgModule'AppModule 'の宣言にリストされていますが、ディレクティブ、コンポーネント、またはパイプではありません

  27. 27

    ネストされたオブジェクトを持つAngular

  28. 28

    Angularでネストされたオブジェクトのプロパティにアクセスするにはどうすればよいですか?

  29. 29

    エクスポートされたメンバーAngularはありません

ホットタグ

アーカイブ