Добрый день.
Начал разбираться с Angular и застрял на элементной операции.
У меня есть модель описывающая пользователя:
export class User {
id?: string;
name?: string;
linktoimage?: string;
}
Есть сервис который обрабатывает эту модель:
import { User } from '../models/User.model';
import { Injectable} from '@angular/core';
import * as signalR from "@aspnet/signalr";
import { Router } from '@angular/router';
@Injectable()
export class UserAuthService {
url = "http://localhost:52015/auth";
user: User = new User();
private connection = new signalR.HubConnectionBuilder().withUrl(this.url, { accessTokenFactory: () => getToken() }).build();
constructor(private router: Router) {
this.connection.start().catch(err => { });
this.connection.on("updateinfo", (state: boolean, ndata: string) => {
if (state == true) {
let jsonData = JSON.parse(ndata);
this.user.name = jsonData.UserName;
this.user.linktoimage = jsonData.ImageLink;
this.router.navigate(['/dashboard']);
}
});
this.connection.on("GetToken", (token: string) => {
this.user.id = token;
sessionStorage.setItem("token", token);
});
}
}
Сам сервис добовляю в providers app.browser.module.ts и в необходимый компонент:
import { Component } from '@angular/core';
import { UserAuthService } from '../../services/auth.service';
@Component({
selector: 'welcome',
template: `<div><button type="button" class="btn btn-block " (click)="StartAuth()"></button></div>`,
styles: [`:host{
top: 0;
left: 0;
width: 100%;
height: 100%;
}`],
providers: [UserAuthService]
})
export class Welcome {
constructor(private _userauth: UserAuthService) { }
public StartAuth(): void {
var authwindow = window.open("/api/Auth/Authorization?code=123&scope=" + this._userauth.user.id);
}
}
Проблема в том, что экземпляр класса user и сам класс User почему-то всегда всегда undefined.
Скорее всего решение какое элементарное.
По замыслу экземпляр класса user должен быть только один доступе для необходимых компонентов.