我是Angular的新手并试图从Angular指南中注入basic structural directive。这是我的指示:
import { Directive, Input, TemplateRef, ViewContainerRef } from '@angular/core';
@Directive({
selector: '[pcDropdown]'
})
export class DropdownDirective {
private hasView = false;
constructor(
private templateRef: TemplateRef<any>,
private viewContainer: ViewContainerRef,
private items
) { }
@Input() set pcDropdown(condition: boolean) {
if (!condition && !this.hasView) {
this.viewContainer.createEmbeddedView(this.templateRef);
this.hasView = true;
} else if (condition && this.hasView) {
this.viewContainer.clear();
this.hasView = false;
}
}
}
我正在尝试将其注入我的TradeModule
:
import { NgModule } from '@angular/core';
import { CommonModule } from '@angular/common';
import { SharedModule } from '../shared/shared.module';
import { TradeComponent } from './trade.component';
import { DropdownDirective } from '../dropdown.directive/dropdown.directive';
@NgModule({
imports: [
CommonModule,
SharedModule
],
declarations: [TradeComponent, DropdownDirective],
exports: [DropdownDirective]
})
export class TradeModule { }
在我的TradeComponent
模板中使用以下部分HTML:
...
<p *pcDropdown="true">
TEST
</p>
...
但是我收到了错误:
未捕获错误:无法解析DropdownDirective的所有参数: ([object Object],[object Object],?)。
Webstorm也是我的@Directive
装饰者的基础,并说出以下内容:
Angular:无法解析DropdownDirective的所有参数 /home/commercialsuicide/Desktop/my-app/src/client/app/dropdown.directive/dropdown.directive.ts: ([object Object],[object Object],?)
它还说我的pcDropdown
输入未使用:
需要说明的是,我已经在emitDecoratorMetadata
中看到this answer和true
已设置为tsconfig.json
。
请指出我拼写错误或忘记在我的代码中包含某些内容的地方。
非常感谢
答案 0 :(得分:5)
private items
缺少类型参数。如果Angular无法将所有参数解析为提供者,则Angular无法创建组件实例
解析为提供程序仅适用于参数类型和@Inject(...)
注释。
如果您不想注射items
,请删除该参数。在任何情况下,您都不需要自己创建组件实例来明确传递参数。
答案 1 :(得分:0)
我刚刚离开我的案子,因为我的要求找到了这个问题。
我有注释@HostListener和onResize方法。 @HostListener应该在相关方法之前和之前。喜欢
@HostListener("window:resize", ["$event"])
getSomeObjects (args:any = {}) {
// some code
}
onResize(event) {
// some code
}
在调用另一个方法之前移动了注释时出现此错误。像
POST http://localhost:444/xml HTTP/1.1
User-Agent: User-Agent: STORMWARE HTTP client. http://www.stormware.cz
STW-Authorization: Basic QDo=
Content-Type: text/xml
Accept-Encoding: gzip, deflate
Host: http://localhost:444
Content-Length: 527
Pragma: no-cache
Connection: Keep-Alive
<?xml version="1.0" encoding="Windows-1250"?>
<dat:dataPack xmlns:dat="http://www.stormware.cz/schema/version_2/data.xsd" xmlns:stk="http://www.stormware.cz/schema/version_2/stock.xsd" xmlns:ftr="http://www.stormware.cz/schema/version_2/filter.xsd" xmlns:lStk="http://www.stormware.cz/schema/version_2/list_stock.xsd" xmlns:typ="http://www.stormware.cz/schema/version_2/type.xsd" id="00000001" ico="25313142" application="HTTP klient" version="2.0" note="Export zasob">
<dat:dataPackItem id="00000001" version="2.0">
<lStk:listStockRequest version="2.0" stockVersion="2.0">
<lStk:requestStock/>
</lStk:listStockRequest>
</dat:dataPackItem>
</dat:dataPack>
希望,这会对某人有所帮助!
答案 2 :(得分:0)
我遇到此错误,就我而言,是因为我有一个名为Storage
的服务,但是编译器不会将其标记为错误,因为javascript具有一个名为相同的全局变量。所以我刚刚添加:
import { Storage } from '@core/auth/token-storage.service';