我正在运行独立组件的Angular 17项目. 我想添加一个服务,在该服务中我将启动和停止NGX-UI-Loader( https://www.npmjs.com/package/ngx-ui-loader). 我不能像老版本那样在根ngxui加载程序中提供普通的模块,所以我想知道这是否可以在Angular17中工作? 当在独立组件中直接调用和导入加载器时,加载器可以正常工作.

当前实施不起作用..

服务代码:

import { Injectable, inject } from '@angular/core';
import { NgxUiLoaderService } from 'ngx-ui-loader';

@Injectable({
  providedIn: 'root',
})
export class LoaderService {
//   ngxLoader = inject(NgxUiLoaderService);
  ngxLoader = inject(NgxUiLoaderService);

  startLoader() {
    console.error('start');
    console.error(this.ngxLoader);
    this.ngxLoader.start();
  }

  stopLoader() {
    this.ngxLoader.stop();
  }


  loaderConfig =
  {
    "bgsColor": "red",
    "bgsOpacity": 0.5,
    "bgsPosition": "bottom-right",
    "bgsSize": 60,
    "bgsType": "ball-spin-clockwise",
    "blur": 5,
    "delay": 0,
    "fastFadeOut": true,
    "fgsColor": "red",
    "fgsPosition": "center-center",
    "fgsSize": 60,
    "fgsType": "ball-spin-clockwise",
    "gap": 24,
    "logoPosition": "center-center",
    "logoSize": 120,
    "logoUrl": "",
    "masterLoaderId": "master",
    "overlayBorderRadius": "0",
    "overlayColor": "rgba(40, 40, 40, 0.8)",
    "pbColor": "red",
    "pbDirection": "ltr",
    "pbThickness": 3,
    "hasProgressBar": true,
    "text": "",
    "textColor": "#FFFFFF",
    "textPosition": "center-center",
    "maxTime": -1,
    "minTime": 300
  }
}

AppComponent.ts



`import { Component, inject } from '@angular/core';
import { CommonModule } from '@angular/common';
import { NavbarComponent } from './components/navbar/navbar.component';
import { NgxUiLoaderModule, NgxUiLoaderService } from 'ngx-ui-loader';
import { LoginComponent } from './components/login/login.component';
import { UserService } from './services/user.service';
import { StorageService } from './services/storage.service';
import { finalize, first } from 'rxjs';
import { LoaderService } from './services/loader.service';

@Component({
  selector: 'app-root',
  standalone: true,
  templateUrl: './app.component.html',
  styleUrl: './app.component.scss',
  imports: [CommonModule, NavbarComponent, NgxUiLoaderModule, LoginComponent],
})
export class AppComponent {
  title = 'CinAppClient';
  userService = inject(UserService);
  storageService = inject(StorageService);
  ngxLoaderService = inject(NgxUiLoaderService);
  loaderService = inject(LoaderService);

  user$ = this.userService.user$;
  constructor() {}

  ngOnInit() {
    this.loaderService.startLoader();
    let storageUser = this.storageService.getUser();
    if (storageUser !== null) {
      this.userService.authToken = storageUser.token;
      this.userService
        .refreshToken()
        .pipe(
          first(),
          finalize(() => this.loaderService.stopLoader())
        )
        .subscribe();
    }
  }
}
type here

AppComponent.html

<ngx-ui-loader [bgsType]="'three-strings'" [fgsType]="'three-strings'">
</ngx-ui-loader>`
type here

推荐答案

你必须在你的应用根目录中提供NgxUiLoaderService.在基于独立的应用程序中,它应该在bootstrapApplication函数中完成,位于main.ts文件中,如下所示:

bootstrapApplication(AppComponent, {
    providers: [NgxUiLoaderService]
})

Angular相关问答推荐

Angular - Bootstrap 5 Carbon不工作

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

从Angular 14更新到15个多边形.ts问题

在Drective Composure API中使用指令输出

从Angular 前端访问ASP.NET Core 8 Web API时出现CORS错误

使用BLOB数据类型时,HTTPCLIENT中可能存在错误

Angular将文件作为字符串读取给dxf解析器

获取 Angular 中所有子集合 firestore 的列表

URL 更改但组件未在 Angular 导航中呈现

如何将模块导入独立指令

Renderer2.appendChild 没有按预期工作?

angular 13 ng 构建库失败(ivy部分编译模式)

ng test 和 ng e2e 之间的真正区别是什么

Angular2 ngFor跳过第一个索引

等待多个promises完成

如何组合两个可观察到的结果?

在 RxJS Observable 中 flatten数组的最佳方法

*ngIf 带有多个异步管道变量

得到了预期表达式的插值 ({{}})

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