【发布时间】:2020-03-18 06:15:12
【问题描述】:
在一个简单的 Angular 应用程序中,我创建了一个如下所示的测试组件:
test.component.ts
import { Component } from '@angular/core';
@Component({
selector: 'test',
template: `<h1>I am a test</h1>`,
styles: [`h1 { font-family: Lato; }`]
})
export class TestComponent {
}
我像这样在我的应用程序模块中导入:
app.component.ts
import { Component } from '@angular/core';
import { TestComponent } from './test.component';
@Component({
selector: 'my-app',
templateUrl: './app.component.html',
styleUrls: [ './app.component.css' ]
})
export class AppComponent {
name = 'Angular';
public TestComponent = TestComponent;
dynamic = "Test";
constructor(){
console.log(TestComponent);
console.log(this.TestComponent);
console.log(this['TestComponent']);
console.log(this[this.dynamic + 'Component']);
}
}
从这个主题Angular 5 Dynamic variable name 获得帮助,我能够动态获取我的组件名称(在实际示例中,动态变量会根据 API 调用响应而变化)。
我的问题是是否有任何方法可以实现相同的结果而不必将组件作为局部类变量传递,从而避免这一行
public TestComponent = TestComponent;
如果没有 this 关键字,动态变量不起作用,它会给我一个错误
console.log([this.dynamic + 'Component']);
我尝试在 stackblitz 中添加代码,但似乎无法共享它 (https://github.com/stackblitz/core/issues/215),但是将这两个文件复制到一个新的空 stackbitz (https://stackblitz.com/edit/angular-f4ars5) 以进行复制非常简单。
提前致谢。
【问题讨论】:
标签: javascript angular typescript