Angular在effects中访问组件提供者
创始人
2024-10-30 19:30:57
0

要在Angular的effects中访问组件提供者,可以使用@Injectable装饰器中的providedIn: 'root'选项来提供服务,并且将服务注入到组件的构造函数中。然后在effects中通过依赖注入来访问组件提供者。

下面是一个示例代码:

  1. 创建一个名为DataService的服务,并将其提供给根组件。
import { Injectable } from '@angular/core';

@Injectable({
  providedIn: 'root'
})
export class DataService {
  getData() {
    return 'Hello World';
  }
}
  1. 在组件中将DataService注入到构造函数中。
import { Component } from '@angular/core';
import { DataService } from './data.service';

@Component({
  selector: 'app-root',
  template: `
    

{{ data }}

`, }) export class AppComponent { data: string; constructor(private dataService: DataService) { this.data = this.dataService.getData(); } }
  1. 在effects中通过依赖注入来访问组件提供者。
import { Injectable } from '@angular/core';
import { Actions, createEffect, ofType } from '@ngrx/effects';
import { DataService } from './data.service';
import { map } from 'rxjs/operators';

@Injectable()
export class DataEffects {
  loadData$ = createEffect(() =>
    this.actions$.pipe(
      ofType('LOAD_DATA'),
      map(() => {
        const data = this.dataService.getData();
        return { type: 'DATA_LOADED', payload: data };
      })
    )
  );

  constructor(private actions$: Actions, private dataService: DataService) {}
}

在上述代码中,DataEffects依赖注入了DataService,然后在loadData$ effect中可以通过this.dataService.getData()来访问组件提供者。

相关内容

热门资讯

开挂辅助脚本"wep... wepoker游戏下载 无需打开直接搜索微信:136704302本司针对手游进行,选择我们的四大理由...
开挂辅助安装"aap... 开挂辅助安装"aapoker透视脚本"开挂(透视)辅助插件(有挂技术)>>您好:软件加1367043...
开挂辅助安装"clo... 开挂辅助安装"cloudpoker辅助"开挂(透视)辅助平台(真实有挂);亲,cloudpoker辅...
开挂辅助软件"wpk... 开挂辅助软件"wpk模拟器多开"开挂(透视)辅助插件(有挂方法)1、下载安装好wpk模拟器多开,进入...
开挂辅助脚本"拱趴大... 开挂辅助脚本"拱趴大菠萝自动计算机器人"开挂(透视)辅助下载(有挂教学) >>您好:软件加薇1367...
开挂辅助脚本"德州圈... 开挂辅助脚本"德州圈脚本"开挂(透视)辅助工具(揭秘有挂)1、下载安装好德州圈脚本,进入游戏主界面,...
开挂辅助工具"pok... 开挂辅助工具"pokerworld辅助器"开挂(透视)辅助插件(存在有挂)pokerworld辅助器...
开挂辅助神器"有哪些... 开挂辅助神器"有哪些免费的wpk辅助码"开挂(透视)辅助安装(真实有挂);无需打开直接搜索加(薇:1...
开挂辅助平台"wep... 《开挂辅助平台"wepoker免费辅助器"开挂(透视)辅助软件(有挂工具)》 wepoker免费辅助...
开挂辅助插件"佛手大... 开挂辅助插件"佛手大菠萝辅助"开挂(透视)辅助平台(有挂解惑);无需打开直接搜索微信(1367043...