我正在try 为我的应用程序创建身份验证保护. 我有一个具有多堆功能的身份验证服务,"isAuthenticated"就是其中之一. 当我将它注入auth Guard并try 运行它时,我得到以下错误. 当没有使用GUGUD时,HTTPS客户端工作得很好. 我错过了什么? 此外,不推荐使用CanActivate,因此使用CanActivateFn

REPO

enter image description here

auth.guard.ts

import { inject } from '@angular/core';
import { CanActivateFn, Router, UrlTree } from '@angular/router';
import { AuthService } from 'src/app/services/auth/auth.service';

export const AuthGuard: CanActivateFn = (route, state) => {
  const authService = inject(AuthService)
  return authService.isAuthenticated()
};

auth.service.ts

import { Injectable } from '@angular/core';
import { HttpClient } from '@angular/common/http';

@Injectable({
  providedIn: 'root',
})
export class AuthService {
  readonly api_url = 'http://localhost:8000/api/';

  constructor(private http: HttpClient) {}

  login(email: string, password: string) {
    ......
  }

  register(email: string, password: string) {
    ......
  }

  authCheck() {
    ......
  }

  isAuthenticated(): any {
    // this.authCheck().subscribe((data:any)=>{return data.message == "Authenticated"})
    return true;
  }
}

main.ts

import { bootstrapApplication } from '@angular/platform-browser';
import { appConfig } from './app/app.config';
import { AppComponent } from './app/app.component';

bootstrapApplication(AppComponent, appConfig)
  .catch((err) => console.error(err));

app.config.ts

import { ApplicationConfig } from '@angular/core';
import { provideRouter,withHashLocation } from '@angular/router';
import { provideAnimations } from '@angular/platform-browser/animations';


import { routes } from './app.routes';

export const appConfig: ApplicationConfig = {
  providers: [ provideAnimations(),provideRouter(routes, withHashLocation())]
};

app.component.ts

import { Component, OnInit } from '@angular/core';
import { CommonModule } from '@angular/common';
import { RouterOutlet } from '@angular/router';
import { PrimeNGConfig } from 'primeng/api';
import { ButtonModule } from 'primeng/button';
import { HeaderComponent } from './core/header/header.component';
import { LoginComponent } from './pages/login/login.component';
import { HttpClientModule } from '@angular/common/http';


@Component({
  selector: 'app-root',
  standalone: true,
  imports: [
    CommonModule,
    RouterOutlet,
    ButtonModule,
    HeaderComponent,
    LoginComponent,
    HttpClientModule
  ],
  templateUrl: './app.component.html',
  styleUrls: ['./app.component.css'],
})
export class AppComponent {
  title = 'e-commerce';
  constructor(private primengConfig: PrimeNGConfig) {}
  ngOnInit() {
    this.primengConfig.ripple = true;
  }
}

如有任何帮助,我们将不胜感激

我已经try 在身份验证服务中注入HTTPClient,但仍然没有成功.

推荐答案

你需要在bootstrapApplicationproviders个列表中加上provideHttpClient().

Angular相关问答推荐

将kendo—colorpicker的kendo弹出窗口附加到组件''

Angularmaterial 中的处理mat—radio—button表单值访问器

Angular 客户端应用程序无法从停靠容器解析后端服务的地址

MAT表的内联文本编辑-未刷新编辑图标

如果我只在组件中使用某个主题,是否需要取消订阅该主题?

如何处理后端删除元素后元素列表的刷新

Angular 信号 在 effect() 中使用 debounce

如何根据响应变化更改 Angular Carousel 的cellsToShow

Angular 13 - 使用 PUT 时出现 400 错误(错误请求)

ng14中具有强类型表单的FormBuilder

如何使用 Angular 12 material 验证密码和确认密码?

如何 use/import http模块?

Angular 2:Validators.pattern() 不工作

visibility:hidden

样式 html,来自 Web 组件的正文

MatToolbar 与 Angular 9 一起使用时抛出错误

No provider for Router?

ng-template 上的 *ngFor 不输出任何内容

Firebase 查询子项的子项是否包含值

declarations和entryComponents组件有什么区别