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

Angular 9:该类不能通过依赖注入创建,因为它没有Angular装饰器

Angular 9是一种流行的前端开发框架,它是基于TypeScript构建的。它提供了一种结构化的方法来开发Web应用程序,并且具有许多强大的功能和工具。

在Angular中,依赖注入是一种重要的设计模式,它允许我们通过将依赖项注入到组件、服务或其他类中来实现松耦合和可测试性。通过使用Angular装饰器,我们可以将类标记为可注入的,并且可以使用依赖注入器来创建它们的实例。

然而,有些类不能通过依赖注入创建,其中包括没有Angular装饰器的类。这些类通常是一些简单的工具类或辅助类,它们不需要被注入到其他类中,并且不依赖于其他类的实例。

对于这些类,我们可以直接实例化它们,而不是使用依赖注入器。我们可以使用new关键字来创建它们的实例,并直接调用它们的方法或访问它们的属性。

在Angular开发中,我们通常会使用依赖注入来管理组件、服务和其他类之间的依赖关系。但是对于没有Angular装饰器的类,我们需要注意不能将它们作为依赖注入的目标。

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

相关·内容

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

依赖注入(DI)是一种创建依赖其他对象的方法。...在创建一个新的对象实例时,依赖注入系统将会提供依赖对象(称为依赖关系) - Angular Docs 我们的组件和服务都是类,每个类都有一个名为constructor的特殊函数,当我们想要在我们的应用程序中创建该类的对象...假如没有Angular DI机制,我们必须手动提供HttpClient来创建我们自己的服务。...装饰中指定 providers: [] 2、在懒加载的模块的@NgModule装饰中指定 providers: [] 3、在@Component和@Directive装饰中指定 providers...即使它被多个模块的providers: []重复申明,它也不会重新创建实例。注入只会创建一个实例,这是因为它们最终都会注册到根级注入

2.8K11

Angular5.0.0新特性

,不需要在客户端重复创建。...3.编译改进   改进了Angular编译来支持增量编译,重新构建变得更快,特别是对生产环境的构建和AOT编译,增强的装饰可以通过更精细化的去除空格来减小产生的包....#gid=0 5.StaticInjector取代ReflectiveInjector依赖注入   为了更多的减少polyfills,5.0中使用了StaticInjector注入来替换原有的ReflectiveInjector...注入,这种注入不再里来与ReflectPolyfill,可以大幅减少应用程序体积 在4.x中,依赖注入一共有两种,即Injector的抽象类子类: 1...._NullInjector (该类的实例用于表示空的注入) 2.ReflectiveInjector (表示一个依赖注入容器,用于实例化对象和解析依赖) 之前提供依赖注入方式:ReflectiveInjector.resolveAndCreate

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

    使用服务的好处是服务可以作为依赖注入到组件中,实现复用,同时还能方便不同模块做通信。 组件和服务都是简单的类,这些类使用装饰来标出它们的类型。...根模块总会有一个根组件,并在引导期间创建。 但是,任何模块都能包含任意数量的其它组件,这些组件可以通过路由加载,也可以通过模板创建。...1.3 服务与依赖注入(DI) 对于与特定视图无关并希望跨组件共享的数据或逻辑,可以创建服务类。 服务类的定义通常紧跟在 “@Injectable” 装饰之后。...该装饰提供的元数据可以让你的服务作为依赖注入到客户组件中。 服务是一个广义的概念,包括应用所需的任何值、函数或特性。狭义的服务是一个明确定义了用途的类。应该做一些具体的事,并做好。...如何使用: 在 Angular 中,要把一个类定义为服务,就要用 @Injectable 装饰来提供元数据,以便让 Angular 可以把作为依赖注入到组件中 使用 @Injectable 装饰来表明一个组件或其它类

    5.3K20

    了不起的 IoC 与 DI

    最简单的情形是该类没有依赖其他类,但现实往往是残酷的,我们在创建某个类的实例时,需要依赖不同类对应的实例。为了让小伙伴们能够更好地理解上述的内容,阿宝哥来举一个例子。 一辆小汽车 ?...因为由容器帮我们查找及注入依赖对象,对象只是被动的接受依赖对象,所以是反转了;哪些方面反转了?依赖对象的获取被反转了。...在该类装饰修饰的 HttpService 类中,我们通过构造注入的方式注入了用于处理 HTTP 请求的 HttpClient 依赖对象。...6.4.1 Injectable 装饰 Injectable 装饰器用于表示此类可以自动注入依赖项,该装饰属于类装饰。...最简单的情形是该类没有依赖其他对象,但在大多数场景下,即将实例化的服务类是会依赖其他的对象的。所以在实例化服务类前,我们需要构造其依赖的对象。 那么现在问题来了,怎么获取类所依赖的对象呢?

    2.7K30

    Angular进阶教程2-

    (可以想象成是一个厨师做菜) Provider:用于配置注入注入通过创建依赖对象的实例。...依赖注入的使用 创建注入服务: import { Injectable } from '@angular/core'; // @Injectable()装饰,是告诉Angular这是一个可供注入的服务...但当该服务需要在构造函数中注入依赖对象,就需要使用Injectable 装饰。不过我们在开发过程中一般都会加上这个装饰。...\color{#0abb3c}{injectors}injectors 补充上述原因: 因为Angular在启动程序时会启动一个根模块,并加载它所依赖的其他模块,此时会生成一个全局的根注入,由该注入创建依赖注入对象在整个应用程序级别可见...,Angular会对延迟加载模块初始化一个新的执行上下文,并创建一个新的注入,在该注入注入依赖只在该模块内部可见,这算是一个特殊的模块级作用域。

    4.1K30

    Angular 服务

    不要使用 new 来创建此服务,而要依靠 Angular依赖注入机制把注入到 HeroesComponent 的构造函数中。 服务是在多个“互相不知道”的类之间共享信息的好办法。...它把这个类标记为依赖注入系统的参与者之一。HeroService 类将会提供一个可注入的服务,并且它还可以拥有自己的待注入依赖。 目前它还没有依赖,但是很快就会有了。...你要用一个注入注册注入就是一个对象,负责在需要时选取和注入该提供商。...默认情况下,Angular CLI 命令 ng generate service 会通过给 @Injectable 装饰添加元数据的形式,用根注入将你的服务注册成为提供商。...你在根注入中把 HeroService 注册为该服务的提供商,以便在别处可以注入。 你使用 Angular 依赖注入机制把注入到了组件中。

    3.3K70

    JavaScript 中的依赖注入

    因为我们将依赖注入提到的最外侧。...JavaScript 框架中的依赖注入 AngularAngular 中大量应用了依赖注入的设计思想。...Angular 使用依赖注入来管理应用的各个部分之间的依赖关系,以及如何将这些依赖关系注入到应用中,例如你可以使用依赖注入注入服务、组件、指令、管道等。...; } } 手动实现依赖注入 前面我们提到的 InversifyJS 实际上就是一个专门用来实现依赖注入的工具库,主要就由 injectable 、inject 等几个装饰组成的,这么神奇的功能究竟是咋实现的呢...主要用处分为两大类: 收集用户定义的类/函数的信息(例如,用于生成路由表,用于实现依赖注入,等等) 对用户定义的类/函数进行增强,增加额外功能 我们目前用的比较多的装饰就是 TypeScript 的实验性装饰

    1.8K31

    Angular 2 架构(上)

    Angular 模块是一个带有 @NgModule 装饰的类,接收一个用来描述模块属性的元数据对象。 几个重要的属性如下: declarations (声明) - 视图类属于这个模块。...创建 Angular 组件的方法有三步: 从 @angular/core 中引入 Component 修饰 建立一个普通的类,并用 @Component 修饰 在 @Component 中,设置 selector...@Component 装饰能接受一个配置对象,并把紧随其后的类标记成了组件类。 Angular 会基于这些信息创建和展示组件及其视图。...@Component 中的配置项说明: selector - 一个 css 选择告诉 Angular 在 父级 HTML 中寻找一个 标签,然后创建该组件,并插入此标签中。...directives - 一个数组,包含 此 模板需要依赖的组件或指令。 providers - 一个数组,包含组件所依赖的服务所需要的依赖注入提供者。 ----

    1.4K10

    Angular定义服务-Learn By Doing

    懒实例化-一个服务只有当程序的组件用到的时候才进行实例化; 单例模式-每个依赖服务的组件,都是获得服务工厂生成单个实例的引用。服务是一个单例对象或函数,对外提供特定的功能。...和constant不相同的地方是,它可以在其他 的地方修改,但是不能注入到config中,但是它可以被装饰decorator修饰。...可以注入到任何需要的组件中,但是不能被装饰decorator修饰。 前后端分类的项目中,定义后端服务URL地址。...和service的区别是,factory注入的是普通的function,而service注入的是一个构造函数constructor。因为它可以返回任何东西,所以在实际开发中使用的最多。...return appVersion; }); 3.4 service() 注入的是一个构造,可以在控制之间共享数据。

    93790

    Angular2:从AngularJS 1.x 中学到的经验

    如果控制之间有一些重复的逻辑,最大的可能就是:我们需要把这些逻辑封装到某个服务里面,如果某个控制需要用到这些功能,就使用AngularJS 的依赖注入机制注入这个服务。...这样看来,似乎控制的功能应该移到指令内部的控制中去。由于指令支持依赖注入API,所以在接收到用户的输入之后,可以直接把具体的操作代理给注入的服务来执行。...因为 Angular 2 是基于最新web 标准构建的,所以使用了ECMAScript 2016 装饰(decorator)语法对使用DI的代码进行了注解。...由于装饰没有标准化,也不被主流浏览所支持,所以使用的时候需要经过中间转换步骤。如果你不想这么麻烦,也可以直接用ECMAScript 5 语法编写一些冗长的代码去实现相同的语义。...所以,Angular 2 采用了单向数据流设计,优点如下: 更明确的数据流。 不同的数据绑定之间没有依赖关系,所以digest 没有存活时间(TTL)的概念。

    2.7K10

    Angular系列教程-第五节

    1.模块 NgModule 是一个带有 @NgModule 装饰的类。 @NgModule 的参数是一个元数据对象,用于描述如何编译组件的模板,以及如何在运行时创建注入。...bootstrap —— 根组件,Angular 创建并插入 index.html 宿主页面。 该模块的 declarations 数组告诉 Angular 哪些组件属于该模块。...2.服务和依赖注入 服务是一个广义的概念,包括应用所需的任何值、函数或特性。狭义的服务是一个明确定义了用途的类。应该做一些具体的事,并做好。...依赖注入Angular 中,要把一个类定义为服务,就要用 @Injectable() 装饰来提供元数据,以便让 Angular 可以把作为依赖注入到组件中。...同样,也要使用 @Injectable() 装饰来表明一个组件或其它类(比如另一个服务、管道或 NgModule)拥有一个依赖

    2.9K20

    Angular 快速学习笔记(1) -- 官方示例要点

    Injectable 可依赖注入装饰 依赖注入的接入(提供 provide) a. 使用service之前,需要将服务提供给依赖注入系统,提供注册一个provider来实现 b....Angular CLI 命令 ng generate service 会通过给 @Injectable 装饰添加元数据的形式 providedIn: 'root', 当你在顶层提供该服务时,Angular...就会为 HeroService 创建一个单一的、共享的实例,并把注入到任何想要的类上 c....Angular 的最佳实践之一就是在一个独立的顶级模块中加载和配置路由专注于路由功能,然后由根模块 AppModule 导入 b. ng generate module app-routing...要使用路由,必须首先初始化路由,并让开始监听浏览中的地址变化 b.

    3.6K00

    Angular 快速学习笔记(1) -- 官方示例要点

    Injectable 可依赖注入装饰 依赖注入的接入(提供 provide) a. 使用service之前,需要将服务提供给依赖注入系统,提供注册一个provider来实现 b....Angular CLI 命令 ng generate service 会通过给 @Injectable 装饰添加元数据的形式 providedIn: 'root', 当你在顶层提供该服务时,Angular...就会为 HeroService 创建一个单一的、共享的实例,并把注入到任何想要的类上 c....Angular 的最佳实践之一就是在一个独立的顶级模块中加载和配置路由专注于路由功能,然后由根模块 AppModule 导入 b. ng generate module app-routing...要使用路由,必须首先初始化路由,并让开始监听浏览中的地址变化 b.

    3.7K50

    【17】进大厂必须掌握的面试题-50个Angular面试

    另一方面,装饰是用于分离装饰或修改类的设计模式,而无需实际更改原始源代码。 9.您对Angular中的控制了解多少? 控制是JavaScript函数,可为HTML UI提供数据和逻辑。...Angular中的提供程序是什么? 提供程序是Angular中的可配置服务。这是对依赖关系注入系统的一条指令,提供有关获取依赖关系值的方式的信息。...在Angular中,服务是可替换对象,该对象使用依赖注入连接在一起。通过将服务注册到要在其中执行的模块中来创建服务。基本上,您可以通过三种方式创建角度服务。...Angular中的Singleton模式是一种很棒的模式,限制了一个类不能被多次使用。Angular中的Singleton模式主要在依赖注入和服务中实现。...它们是使用恒定依赖创建的,可以注入控制或服务中的任何位置。 44. Angular的提供者,服务和工厂之间有什么区别?

    41.4K51

    Angular2 VS Angular4 深度对比:特性、性能

    由Traceur编译(结合ES6)进行处理,然后生成ES5代码,并使用TypeScript语法创建运行时类型断言。...提升依赖注入(DI): 依赖注入(一种程序设计模式,可以通过依赖关系实现调用,而不需要生成)是一种Angular显著区别于其竞争对手的特性。...依赖注入在模块化开发和元素隔离方面非常有帮助,但它的实现一直受到Angular 1.x的困扰。Angular2解决了这个问题,另外还添加了一些缺少的功能,如子注入以及生命周期/范围控制。...装饰指令:可用于装饰元素(例如,通过隐藏/显示元素ng-hide/ng-show或添加工具提示)。 模板指令:可以将HTML转换为可复用的模板。...设计: 所有这些逻辑都是使用管道架构创建的,这使得将自己的操作添加到管道中或删除默认操作变得非常简单。此外,的异步字符允许开发人员在管道中,实现对用户进行身份验证或加载控件信息的服务请求。

    8.7K20

    前端请进:玩转Angular 注射

    如果没有深入使用过 Spring 框架,对普通技术人员来说,“依赖注入”机制理解起来还是颇费脑力的。...本文将会聚焦在 Angular 的“依赖注入机制”,方便利用零碎时间阅读和掌握,其内容全面而系统,覆盖了与 DI 相关的所有 Decorator(装饰),同时补充了一些官方文档上没有出现的细节,所有的...在《Angular 初学者快速上手教程》里面,关于“注射树”这事儿我们没说太细,这里要说得更精确一点:如果一个 DOM 元素上面被创建了 Component 或者 Directive,Angular...就会创建一个对应的注射实例。...比如,对于 NiceFish 首页: 的服务依赖关系是这样的: 组件依赖关系是这样的: 整体路由树是这样的: 04 小结 到这里为止,你知道了:在 Angular 应用运行时,组件之间会构成树形结构,

    1.2K70

    前端框架与库 - Angular模块与依赖注入

    Angular 是一个流行的前端框架,以其强大的模块化结构和依赖注入系统著称。...本文将深入探讨Angular的模块与依赖注入机制,包括它们的基本概念、常见问题、易错点以及如何避免这些问题,通过具体的代码示例进行说明。1....模块通过 @NgModule 装饰声明,通常包含以下几部分:declarations: 列出属于此模块的所有组件、指令和管道。imports: 导入其他模块,以使用它们提供的功能。...依赖注入(DI)依赖注入Angular的核心特性之一,允许我们以声明式的方式管理类之间的依赖关系。Angular 使用服务定位模式,通过 DI 容器在运行时动态创建注入依赖项。...例如,全局服务可能在不需要的地方被初始化,而局部服务可能在每个组件实例中重复创建。问题3:依赖循环当两个或多个服务相互依赖时,如果没有正确的配置,可能会导致依赖循环,进而引发编译错误。4.

    11510

    一统江湖的大前端(10)——inversify.js控制反转

    Angular没落的原因并不是因为它不够好,反而是因为过于优秀,还有点高冷,忽略了国内前端开发者的学习意愿和接受能力,就好像一个学霸,明明成绩已经很好了,但还是不断寻求挑战来实现自我突破,尽管他从不吝啬分享自己的所思所想...本章中我们就一起来学习Angular框架中最具特色的技术——DI(依赖注入),了解相关的IOC设计模式、AOP编程思想以及实现层面的装饰语法,最后再看看如何使用Inversify.js来在自己的代码中实现...,如果需要单例且还没有生成过相应的对象,就调用工厂方法来生成单例,最终根据配置信息来判断是返回单例还是创建新的实例。...Angular中提供的装饰通常都可以接收参数,我们只需要借助高阶函数来实现一个“装饰工厂”,返回一个装饰生成函数就可以了: // Angular中的组件定义 @Component({ selector...其他类型的装饰本文中不再赘述,它们的工作方式是相似的,下一节中我们来看看Inversify.js是如何使用装饰语法来实现依赖注入的。

    3.4K30
    领券