首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

Angular 8:在不使用构造函数的情况下获取另一个服务的实例

Angular 8是一种流行的前端开发框架,用于构建现代化的Web应用程序。在Angular中,可以使用依赖注入来获取其他服务的实例。通常情况下,我们可以在组件的构造函数中注入所需的服务,然后通过该服务的实例来访问其方法和属性。但是,有时候我们可能需要在不使用构造函数的情况下获取另一个服务的实例。下面是一种实现这个目标的方法:

  1. 首先,在组件的类定义中,使用@ViewChild装饰器来获取对另一个组件或指令的引用。例如,假设我们要获取一个名为OtherService的服务的实例:
代码语言:txt
复制
import { Component, ViewChild } from '@angular/core';
import { OtherService } from 'path/to/other.service';

@Component({
  selector: 'app-my-component',
  template: `
    <app-other-component></app-other-component>
  `
})
export class MyComponent {
  @ViewChild(OtherService) otherService: OtherService;

  ngAfterViewInit() {
    // 在这里可以访问otherService的方法和属性
    this.otherService.someMethod();
  }
}
  1. 在模板中,使用<app-other-component></app-other-component>来引入另一个组件或指令。确保在模板中正确地引入了所需的组件或指令。

通过上述方法,我们可以在不使用构造函数的情况下获取另一个服务的实例。请注意,这种方法适用于获取组件或指令的实例,而不是直接获取服务的实例。如果要获取服务的实例,可以在组件的构造函数中注入该服务。

对于Angular 8的更多信息和详细介绍,可以参考腾讯云的官方文档:Angular 8开发指南

页面内容是否对你有帮助?
有帮助
没帮助

相关·内容

AngularDart4.0 指南- 依赖注入 顶

Bootstrap程序配置通常将应用程序包外部声明服务保留给整个应用程序范围。这就是为什么鼓励使用引导注册应用程序特定服务原因。 首选方法是应用组件中注册应用服务。...该组件不应该使用new创建HeroService。 它应该要求注入HeroService。 您可以通过指定具有依赖类型构造函数参数来告诉Angular组件构造函数中注入依赖项。...你可以给它一个调用一个记录器工厂函数提供者,正确情况下,任何这些方法都可能是一个不错选择。 重要是,注入器有一个提供者,当它需要一个Logger。...当组件要求输入新或旧记录器时,依赖注入器应该注入该单例实例。 OldLogger应该是NewLogger别名。 你当然希望在你应用程序中使用两个不同NewLogger实例。...; } 注射器本身是一种注射服务。 在这个例子中,Angular将组件注入器注入到组件构造函数中。 该组件然后ngOnInit()中向注入注入器询问它想要服务

5.7K20

angular面试题及答案_angular面试

传统web技术中,客户端请求一个web页面(HTML/JSP/asp),服务器返回资源(或HTML页面),客户端再次请求另一个页面,服务器用另一个资源响应。...Constructor 和 ngOnInit 本质区别 Constructor ES6中 constructor表示构造函数使用在class中。来初始化操作。...当类被初始化之后,构造函数会被调用 ngOnInit ngOnInit 是angular中OnInit钩子实现,用来初始化组件。...Angular懒加载 默认情况下初始化时候所有路由都会加载,导致加载缓慢,启动速度慢,所以可以使用懒加载 懒加载 : 通俗 讲就是进入主模块之后,子模块不加载,等真正访问到子模块之后,再去加载...本站仅提供信息存储空间服务拥有所有权,承担相关法律责任。如发现本站有涉嫌侵权/违法违规内容, 请发送邮件至 举报,一经查实,本站将立刻删除。

11.1K120
  • AngularDart4.0 英雄之旅-教程-06服务

    应该如何获取HeroService实例?...如果您更改HeroService构造函数,则必须查找并更新您创建服务每个位置。 多个地方修补代码是容易出错,并增加了测试负担。 每次使用新建时都会创建一个服务。...现在Angular知道创建一个新AppComponent时要提供一个HeroService实例依赖注入页面阅读更多关于依赖注入内容。...您可能会试图构造函数中调用getHeroes()方法,但构造函数不应包含复杂逻辑,特别是调用服务构造函数(如数据访问方法)。 构造函数用于简单初始化,如将构造函数参数连接到属性。...您设计了服务来返回一个Future和从未来获取数据组件。 你应用应该看起来像这个实例(查看源代码)。 前方路 英雄之旅已经变得更加可重复使用共享组件和服务

    2.9K10

    前端面试题angular_Vue前端面试题

    factory:把 service 方法和数据放在一个对象里,并返回这个对象 service:通过构造函数方式创建 service,返回一个实例化对象 provider:创建一个可通过 config...复杂应用中,也可以为实体建立对应构造函数,比如硬盘(Disk)模块,可能有列表、新建、详情这样几个视图,并分别对应有 controller,那么可以建一个 Disk 构造函数,里面完成数据增删改查和验证操作...8angular 应用常用哪些路由库,各自区别是什么?...scope中,@,=,&进行值绑定时分别表示 @获取一个设置字符串,它可以自己设置也可以使用{ {yourModel}}进行绑定; = 双向绑定,绑定scope上一些属性; &用于执行父级...本站仅提供信息存储空间服务拥有所有权,承担相关法律责任。如发现本站有涉嫌侵权/违法违规内容, 请发送邮件至 举报,一经查实,本站将立刻删除。

    14.1K20

    Angular 服务

    不要使用 new 来创建此服务,而要依靠 Angular 依赖注入机制把它注入到 HeroesComponent 构造函数中。 服务多个“互相不知道”类之间共享信息好办法。...默认情况下Angular CLI 命令 ng generate service 会通过给 @Injectable 装饰器添加元数据形式,用根注入器将你服务注册成为提供商。...root',}) @ Injectable ({ providedIn: 'root', }) 当你顶层提供该服务时,Angular 就会为 HeroService 创建一个单一、共享实例,...让构造函数保持简单,只做初始化操作,比如把构造函数参数赋值给属性。 构造函数不应该做任何事。 它当然不应该调用某个函数来向远端服务(比如真实数据服务)发起 HTTP 请求。...而是选择 ngOnInit 生命周期钩子中调用 getHeroes(),之后交由 Angular 处理,它会在构造出 HeroesComponent 实例之后某个合适时机调用 ngOnInit。

    3.3K70

    再谈angularJS数据绑定机制及背后原理—angularJS常见问题总结

    3、给 ng-repeat 手工添加 track by 恰当 ng-repeat 会造成 DOM 树反复重新构造,拖慢浏览器响应速度,造成页面闪烁。...factory 把 service 方法和数据放在一个对象里,并返回这个对象;service 通过构造函数方式创建 service,返回一个实例化对象;provider 创建一个可通过 config...详述angular“依赖注入” AngularJS 是通过构造函数参数名字来推断依赖服务名称,通过 toString() 来找到这个定义 function 对应字符串,然后用正则解析出其中参数...使用controller as一大好处就是原型链继承给scope带来问题都不复存在了,即有效避免了嵌套scope情况下子scope属性隐藏掉父scope属性情况。)...$compile,Angular中即“编译”服务,它涉及到Angular应用“编译”和“链接”两个阶段,根据从DOM树遍历Angular根节点(ng-app)和已构造完毕 \$rootScope

    7.8K40

    Angular 从入坑到挖坑 - HTTP 请求概览

    ,引入 HttpClient 类,然后通过依赖注入方式注入到应用类中 通常情况下,我们需要将与后端进行交互行为封装成服务,在这个服务中完成对于获取数据处理,之后再注入到需要使用服务组件中...项目中创建一个接口,按照后端返回数据信息进行属性定义,用来映射请求响应信息(Angular 只能将请求响应对象转换成接口类型,不能自动转换成类实例) ng g interface interfaces...AntiMotivationalQuotesComponent implements OnInit { public quoteResponse: GetQuotesResponseModel; // 通过构造函数注入方式使用服务...4.1.3、提交数据到服务同后端接口进行交互时,获取数据一般用是 get 请求,而当进行数据新增、更新、删除时则会使用 post、put、delete 这三个 HTTP 谓词 毒鸡汤这个接口中...4.3、请求和响应拦截 服务器发起请求时,一般是需要我们在请求头中添加上授权 token 信息,与其当后端接口返回我们无权访问时再来处理,是不是可以发起请求前去进行拦截判断,如果包含 token

    5.3K10

    AngularDart4.0 指南-体系结构概述 顶

    您可以通过使用Angular标记组合HTML 模板,编写组件类来管理这些模板,服务中添加应用程序逻辑以及模块中装入组件和服务来编写Angular应用程序。 然后,通过引导根模块启动应用程序。...这是告诉Angular这个组件构造函数需要HeroService一种方法,这样它就可以获得显示英雄列表。 ? @Component中元数据告诉Angular从哪里获取为组件指定主要构建块。...大多数依赖是服务Angular使用依赖注入来为新组件提供他们需要服务Angular可以通过查看构造函数参数类型来判断组件需要哪些服务。...如果请求服务实例不在容器中,那么服务返回给Angular之前,注入器将创建一个并将其添加到容器中。 当所有请求服务已经解析并返回时,Angular可以用这些服务作为参数调用组件构造函数。...关于依赖注入要点: 依赖注入连接到Angular框架,并在任何地方使用。 注入器是主要机制。        注入器维护它创建服务实例容器。        注入器可以从提供者创建新服务实例

    7.9K30

    Angular 6+依赖注入使用指南:providedIn与providers对比

    创建一个新对象实例时,依赖注入系统将会提供依赖对象(称为依赖关系) - Angular Docs 我们组件和服务都是类,每个类都有一个名为constructor特殊函数,当我们想要在我们应用程序中创建该类对象...幸好,Angular DI机制自动地帮我们完成了上述所有操作,我们所要做只是组件构造函数中指定依赖项,组件将会很轻松地就能用到这些依赖。可天下没有免费午餐......在这种情况下服务不是单例,每次我们另一个组件模板中使用组件时,我们都会获得所提供服务实例。 这也意味着服务实例将与组件一起销毁.........在这种情况下, 组件每次使用都会显示相同随机数,因为该数字是服务实例化期间生成。...可能有数百个组件和服务模块可以不影响应用程序其余部分情况下随意移动,这是非常令人惊奇! 这种隔离另一个巨大好处是,对懒惰模块逻辑进行更改永远不会导致应用程序其他部分出错。

    2.8K11

    在前端中理解MVC服务Angular篇(完结)

    第三篇文章中,应用程序将使用 Angular 构建,该版本来自TypeScript 第二个版本。因此,本文介绍应用程序从 TypeScript 到Angular迁移。...该服务允许Model贫血化,因为所有的逻辑负载都在其中。在此特定情况下,我们将使用数组来存储所有用户,并生成与读取、修改、创建和删除 (CRUD) 用户关联四种方法。...我们Class构造函数如下: constructor() { const users: UserDto[] = JSON.parse(localStorage.getItem('users'))...('users', JSON.stringify(users)); } 此方法不会调用创建服务时绑定函数 JavaScript 或 TypeScript 中开发时callback是必需,因为...另一个有趣点是,Angular 在此示例中帮助我们使用反应形式。有了这些,模板连接到控制器,而无需我们发送处理程序来建立连接。

    4.1K20

    Angular快速学习笔记(2) -- 架构

    - 组件定义视图,是可视化部分,每个应用都至少有一个根组件 - 组件使用服务,组件提果数据可视化,而服务提供与视图直接相关功能,后台开发容易理解。...(比如另一个服务、管道或 NgModule)拥有一个依赖。...通常在构造函数,注入依赖service: constructor(private service: HeroService) { } 当 Angular 发现某个组件依赖某个服务时,它会首先检查是否该注入器中已经有了那个服务任何现有实例...你可以模块中或者组件中注册这些提供商。 - 当你往根模块中添加服务提供商时,服务同一个实例服务于你应用中所有组件。...- 当你组件级注册提供商时,你会为该组件每一个新实例提供该服务一个新实例, 要在组件级注册,就要在 @Component 元数据 providers 属性中注册服务提供商 因此,对于模块机共用

    5.3K20

    Angular5.0.0新特性

    这一点通过HTTP获取数据并展示时非常有用。通过服务端状态转移,客户端不需要在发送第二个HTTP数据请求,状态转移API文档将在未来几周内发布。...此处另一个改变是AngularUniversal团队添加了Domino渲染工具,Domino加入意味着我们服务器端上下文中将可以支持更多DOM操作,改进了对第三方JS和组件库支持。...增强装饰符支持 装饰符降低了使用useValue、useFactory、data对lambda表达式要求,开发者也可以使用一个lamdba表示来代替一个已定义命名函数,也就意味着你可以事先在...} ); 7.exportAs多命名支持   5.0中提供了组件/指令多命名支持,在对用户不修改代码情况下进行组件迁移操作等非常有用,将一个组件导出多个名字,可以让组件已一个新名字来使用而达到破坏现有代码目的...8.HttpClient   4.3中HttpClient模块被封装在@angular/common中,新HttpClient被封装在@angular/common/http中,更新Http模块后

    1.7K10

    .NET Core TDD 前传: 编写易于测试代码 -- 构建对象

    但是有时候, 开发者会在构造过程中添加一些程序逻辑. 这就相当于车还没造完, 我们就驾驶它去兜风了. 这样做是不太好. 构造函数是类用来创建其实例对象方法, 这里代码是用来准备该对象....然后构造函数里把它们赋值给类私有变量....这是不对, 构建过程中直接new的话, 就会造成紧耦合, 也无法测试中使用Test Double来代替它们了. 如果测试中代替它们的话, 有些服务开销可能会很大....而如果UserService并不是构造函数注入UserRepository的话: ? 那么Controller里就应该这样写: ? 不过最好还是使用构造函数注入写法. 第三个例子 ?...所以测试设置过程也会比较麻烦: ? 当然也可以直接new, 而是使用mock. 总之都很麻烦.

    50120

    Angular与MVVM框架

    web页面中,大部分Model都是来自Ajax服务端返回数据或者是全局配置对象;而angularservice则是封装和处理这些与Model相关业务逻辑场所,这类业务服务是可以被多个Controller...(scope) 此处scope即为$rootScope 使用compile函数可以改变原始dom(template element),ng创建原始dom实例以及创建scope实例之前。...scope属性定义情况下,会触发这种情况,还有几种别的特殊情况,如果是独立作用域的话,会多一个$root属性,这个默认是指向rootscope 如果不是独立作用域,则会生成一个内部构造函数,把此构造函数...,若传递是一个函数,则依赖模块作为入参传递,此时可通过序列化函数进行正则匹配,获取依赖模块名称并存入$inject数组中返回,另外,通过函数入参传递依赖方式严格模式下执行会抛出异常;第二种依赖传递则是通过数组方式...,数组最后一个元素是需要使用依赖函数

    3.9K90

    使用Angular依赖注入

    首先介绍 Angular 中依赖注入相关概念: Service 服务 Service 表现形式是一个class,可以用来组件中复用 比如 Http 请求获取数据,日志处理,验证用户输入等都写成Service...import { Injectable } from '@angular/core'; // Angular 中,要把一个类定义为服务,就要用 `@Injectable` 装饰器来提供元数据 @Injectable...,也叫令牌,表示构造函数中指定类型。...userFactory 除了useClass写法,还可以使用 userFactory 工厂方法,这个方法返回实例作为构造函数中productService参数内容。...@Injectable 装饰器 表示FooService可以通过构造函数注入其他服务 举个例子,如果注释掉 // @Injectable({ // providedIn: 'root' // })

    99210

    Angular与MVVM框架

    web页面中,大部分Model都是来自Ajax服务端返回数据或者是全局配置对象;而angularservice则是封装和处理这些与Model相关业务逻辑场所,这类业务服务是可以被多个Controller...(scope) 此处scope即为$rootScope 使用compile函数可以改变原始dom(template element),ng创建原始dom实例以及创建scope实例之前。...scope属性定义情况下,会触发这种情况,还有几种别的特殊情况,如果是独立作用域的话,会多一个$root属性,这个默认是指向rootscope 如果不是独立作用域,则会生成一个内部构造函数,把此构造函数...,若传递是一个函数,则依赖模块作为入参传递,此时可通过序列化函数进行正则匹配,获取依赖模块名称并存入$inject数组中返回,另外,通过函数入参传递依赖方式严格模式下执行会抛出异常;第二种依赖传递则是通过数组方式...,数组最后一个元素是需要使用依赖函数

    2.6K20

    Angular源码分析之$compile

    @(Angular) $compile,Angular中即“编译”服务,它涉及到Angular应用“编译”和“链接”两个阶段,根据从DOM树遍历Angular根节点(ng-app)和已构造完毕...那么在前端领域呢,采用依赖注入有什么与之前开发不一样体验呢? 我认为,前端领域依赖注入,则大大减少了命名空间使用,如著名YUI框架命名空间引用方式,极端情况下对象引用可能会非常长。...,如果dom节点上某个指令定义了控制器,则会调用$cotroller服务,通过依赖注入方式($injector.invoke)获取该控制器实例,并缓存该控制器实例; 随后,调用initializeDirectiveBindings...,完成隔离作用域属性单向绑定(@),双向绑定(=)和函数引用(&),针对隔离作用域双向绑定模式(=)实现,则是通过自定义编译器完成简单Angular语法编译,指定作用域下获取表达式(标示符...publicLinkFn中,完成根节点与根作用域绑定,并在根节点缓存指令控制器实例,最终执行合成链接函数,完成了Angular最重要编译,链接两个阶段,从而开始了真正意义上双向绑定。

    1.5K50

    Angular进阶教程2-

    但当该服务需要在构造函数中注入依赖对象,就需要使用Injectable 装饰器。不过我们开发过程中一般都会加上这个装饰器。...: GoodsListService } ] // 其中provide属性可以理解为这个Provider唯一标识,用于定位依赖值,也就是应用中使用服务名 // 而useClass属性则代表使用哪个服务类来创建实例...Angular启动程序时会启动一个根模块,并加载它所依赖其他模块,此时会生成一个全局根注入器,由该注入器创建依赖注入对象整个应用程序级别可见,并共享一个实例。...// 这种方式注册,可以对服务进行一些额外配置(服务类中也需要写@Injectable()装饰器)。 // 使用路由懒加载情况下,这种注入方式和在服务类中注入方式是一样。...服务类中注入服务 // 这种注入方式,会告诉Angular根注入器中注册这个服务,这也是使用CLI生成服务时默认方式. // 这种方式注册,不需要再@NgModule装饰器中写providers,

    4.1K30
    领券