在Angular中,如何定义多个组件使用的一组通用函数/枚举?
我正在做一个包含几个组件的角度库。它们中的大多数都需要相同的枚举和函数。为了将其分解,我将所有公共函数/枚举放在一个公共模块中 文件组织在Angular中,如何定义多个组件使用的一组通用函数/枚举?,angular,enums,undefined,Angular,Enums,Undefined,我正在做一个包含几个组件的角度库。它们中的大多数都需要相同的枚举和函数。为了将其分解,我将所有公共函数/枚举放在一个公共模块中 文件组织 |- src/ |- common/ |- common.ts |- components/ |- component1.component.ts |- component2.component.ts ... 普通。ts module CommonTools { export enum FooEnum{
|- src/
|- common/
|- common.ts
|- components/
|- component1.component.ts
|- component2.component.ts
...
普通。ts
module CommonTools {
export enum FooEnum{
VALUE1 = <any>"Val 1",
VALUE2= <any>"Val 2"
}
export function dummy(){
return true;
}
}
/// <reference path="../common/common.ts"/>
import {Component, Input} from '@angular/core';
...
export class Component1 {
@Input() attribute1: CommonTools.FooEnum;
private attribute2: boolean;
...
constructor() {
attribute1 = CommonTools.FooEnum.VALUE1;
attribute2 = false;
}
ngOnInit(){
attribute2 = CommonTools.dummy();
}
}
export enum FooEnum{
VALUE1 = <any>"Val 1",
VALUE2= <any>"Val 2"
}
export function dummy(){
return true;
}
import {Component, Input} from '@angular/core';
import {FooEnum} from '../common/common'
import {dummy} from '../common/common'
...
export class Component1 {
@Input() attribute1: FooEnum;
private attribute2: boolean;
...
constructor() {
attribute1 = FooEnum.VALUE1;
attribute2 = false;
}
ngOnInit(){
attribute2 = dummy();
}
}
模块通用工具{
导出枚举FooEnum{
VALUE1=原因:未定义CommonTools“
你有办法解决这个问题吗?我找到的最佳答案是避免包装枚举和函数,并在每个组件中逐个导入,如下所示:
普通。ts
module CommonTools {
export enum FooEnum{
VALUE1 = <any>"Val 1",
VALUE2= <any>"Val 2"
}
export function dummy(){
return true;
}
}
/// <reference path="../common/common.ts"/>
import {Component, Input} from '@angular/core';
...
export class Component1 {
@Input() attribute1: CommonTools.FooEnum;
private attribute2: boolean;
...
constructor() {
attribute1 = CommonTools.FooEnum.VALUE1;
attribute2 = false;
}
ngOnInit(){
attribute2 = CommonTools.dummy();
}
}
export enum FooEnum{
VALUE1 = <any>"Val 1",
VALUE2= <any>"Val 2"
}
export function dummy(){
return true;
}
import {Component, Input} from '@angular/core';
import {FooEnum} from '../common/common'
import {dummy} from '../common/common'
...
export class Component1 {
@Input() attribute1: FooEnum;
private attribute2: boolean;
...
constructor() {
attribute1 = FooEnum.VALUE1;
attribute2 = false;
}
ngOnInit(){
attribute2 = dummy();
}
}
它比导入所有枚举和函数(甚至是无用的枚举和函数)更有效在模块/提供程序中,但对开发人员来说不太实用,因为我们必须逐个导入它们。您还没有导出CommonTools模块…为什么不将其作为提供程序呢?您不需要创建服务。只需在不使用包装器的情况下导出它们。也许您想要共享模块?请参阅官方文档。将共享模块导入主mo谢谢你的回答。我知道有几种可能性,但我不知道哪一种是最好的。我只想收集(用某种东西包装起来)为了在我的几个组件中使用它们,避免在所有xxx.component.ts.Provider?共享服务?或其他方式中复制它们,我不知道什么是最好的方法。