Использование ngx-alert в auth service.ts Angular - PullRequest
0 голосов
/ 01 августа 2020

Я новичок в программировании, а angular у меня есть служба аутентификации и модуль аутентификации, в котором есть компонент входа, регистрации и сброса пароля. Я пытаюсь использовать службу предупреждений в своей службе аутентификации, однако она не отображается, когда я запускаю ее из службы. Вот мой код LOGIN HTML

<div class="login-page" [@routerTransition]> 
    <ngx-alerts></ngx-alerts>
    <div class="row justify-content-md-center">...

LOGIN.TS

import { Component, OnInit, ViewChild } from '@angular/core';
import { NgForm } from '@angular/forms';
import {AlertService} from 'ngx-alerts';

import { Globals } from '../../core/Globals';
import { AuthService } from '../auth.service';
import { LoginUser } from '../../core/interface';
import { routerTransition } from '../../core/router.animations';

@Component({
  selector: 'app-login',
  templateUrl: './login.component.html',
  styleUrls: ['./login.component.scss'],
  animations: [routerTransition()]
})
export class LoginComponent implements OnInit {
  @ViewChild('f', {static: true}) loginForm: NgForm;
  user: LoginUser;

  constructor(
    private auth: AuthService,
    private globals: Globals,
    private alertService: AlertService
    ) { }
ngOnInit() {
  }

  onLogin() {
    if (!this.loginForm.value.email) {
      this.alertService.warning(this.globals.messages.err_enter_email);
      return false;
    }
    if (!this.loginForm.value.password) {
      this.alertService.warning(this.globals.messages.err_enter_password);
      return false;
    }
    this.user = {
      email : this.loginForm.value.email,
      password : this.loginForm.value.password
    };

    if (this.loginForm.valid) {
      console.log(this.loginForm);
      console.log(this.user);
      this.auth.login(this.user);
    }
  }
}

Auth Service

import { ErrorHandlingService } from './../core/services/error-handling.service';
import { LoginUser, RegisterUser, Token } from './../core/interface';
import { Injectable } from '@angular/core';
import { HttpClient } from '@angular/common/http';
import { Globals } from '../core/Globals';
import { Router } from '@angular/router';
import {AlertService} from 'ngx-alerts';

@Injectable(
    {providedIn: 'root'}
)
export class AuthService {
    constructor(
        private http: HttpClient,
        private globals: Globals,
        private errorHandling: ErrorHandlingService,
        private router: Router,
        private alertService: AlertService) {
    }
public login(user: LoginUser) {
        localStorage.clear();
        this.http.post(this.globals.api + `/users/login`, user).subscribe(
            (res: Token) => {
                const data = res as Token;
                this.saveToken(data);
                console.log(res);
                console.log(this.globals.messages.general_success);
                this.alertService.warning(this.globals.messages.general_success);
                // this.router.navigate(['/layout']);

              },
              (error) => {
                this.errorHandling.errorMessage(error.status);
                console.log(error);
              }
        );
    }

Error Service

import { Globals } from './../Globals';
import { Injectable } from '@angular/core';
import { AlertService } from 'ngx-alerts';

@Injectable(
    {providedIn: 'root'}
)
export class ErrorHandlingService {
    constructor(private globals: Globals, private alertService: AlertService) {
    }

    errorMessage(errorCode: number) {
        switch (errorCode) {
            case 0: {
               console.log(this.globals.messages.err_server);
               this.alertService.danger(this.globals.messages.err_server);
               break;
            }
            case 401: {
               console.log(this.globals.messages.register_error);
               this.alertService.danger(this.globals.messages.register_erro);
               break;
            }
            default: {
               console.log(this.globals.messages.general_error);
               break;
            }
         }
    }
}

Предупреждения, которые я запускаю в компоненте, работают, однако, когда я пытаюсь вызвать их из службы аутентификации или службы ошибок, они не работают

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...