Угловая 6 структурная директива - PullRequest
0 голосов
/ 27 августа 2018

Я пытался создать настолько простую структурную директиву с Angular 6, насколько вы можете.Я создал проект, а затем сгенерировал новую директиву.Директива была добавлена ​​в раздел «склонения» @NgModule.Добавлена ​​директива в app.component.html, но я продолжаю получать

Невозможно привязать к appHasPermission, поскольку это не известное свойство div.(">>] * appHasPermission =" good ">

app.component.html

<div *appHasPermission="good">
  <h1>Hello</h1>
</div>

директива

import {Directive, Input, TemplateRef, ViewContainerRef} from '@angular/core';

@Directive({
  selector: '[appHasPermission]'
})
export class HasPermissionDirective {

  @Input() set permissionName(name: any) {
    this.viewContainerRef.createEmbeddedView(this.templateRef);
  }

  constructor(private templateRef: TemplateRef<any>, private viewContainerRef: ViewContainerRef) { }

}

и модуль

import { BrowserModule } from '@angular/platform-browser';
import { NgModule } from '@angular/core';

import { AppComponent } from './app.component';
import { HasPermissionDirective } from './has-permission.directive';

@NgModule({
  declarations: [
    AppComponent,
    HasPermissionDirective
  ],
  imports: [
    BrowserModule
  ],
  providers: [],
  bootstrap: [AppComponent]
})
export class AppModule { }

Я посмотрел учебники и видео, и они так точно, что я сделал.Это должно быть что-то очевидное.Есть идеи?

1 Ответ

0 голосов
/ 27 августа 2018

Существует несколько способов использования вашей проблемы:

1) Изменить @Input имя:

@Input() set appHasPermission(name: any) {
  ...
}

2) Определить @Input псевдоним:

@Input('appHasPermission') set permissionName(name: any) {
  ...
}
...