TSLint 警告を抑制するために Angular2 コンポーネントのデフォルトプレフィックスを変更する
Angular2 でコンポーネントのデフォルトプレフィックスを変更して TSLint 警告を抑制する方法
この問題を解決するには、コンポーネントのデフォルトプレフィックスを変更することができます。以下の方法で変更できます。
@Component
デコレータの selector
オプションに、カスタムプレフィックスを指定することができます。例えば、以下のコードでは、コンポーネントセレクターのデフォルトプレフィックスを app
から my-app
に変更しています。
@Component({
selector: 'my-app',
templateUrl: './app.component.html',
styleUrls: ['./app.component.css']
})
export class AppComponent {
// ...
}
ng-component 属性を使用する
<div ng-component="my-app">
</div>
{
"rules": {
"component-selector": [
true,
"my-app"
]
}
}
これらの方法のいずれかを使用することで、Angular2 でコンポーネントのデフォルトプレフィックスを変更し、TSLint 警告を抑制することができます。
@Component デコレータの selector オプションを使用する
@Component({
selector: 'my-app',
templateUrl: './app.component.html',
styleUrls: ['./app.component.css']
})
export class AppComponent {
// ...
}
@Component({
selector: 'my-second-component',
templateUrl: './second-component.html',
styleUrls: ['./second-component.css']
})
export class SecondComponent {
// ...
}
AppComponent
はmy-app
というセレクターを使用しています。
ng-component 属性を使用する
<div ng-component="my-app">
<h1>My App</h1>
</div>
<div ng-component="my-second-component">
<h1>Second Component</h1>
</div>
この例では、2つのコンポーネントがあります。
my-app
コンポーネントは<h1>My App</h1>
というテンプレートを持っています。my-second-component
コンポーネントは<h1>Second Component</h1>
というテンプレートを持っています。
tslint.json ファイルを使用する
{
"rules": {
"component-selector": [
true,
"my-app"
]
}
}
この例では、tslint.json
ファイルを使用して、コンポーネントセレクターのデフォルトプレフィックスを my-app
に設定しています。
この設定により、すべてのコンポーネントセレクターは my-app
で始まる必要があります。
<div ng-component="app">
<h1>My App</h1>
</div>
<div ng-component="my-app">
<h1>My App</h1>
</div>
Angular2 でコンポーネントのデフォルトプレフィックスを変更するその他の方法
ng-cli
コマンドを使用して、プロジェクト全体のデフォルトプレフィックスを変更することができます。
ng set prefix my-app
このコマンドを実行すると、angular.json
ファイルに prefix
プロパティが追加されます。
{
"cli": {
"defaultComponentPrefix": "my-app"
}
}
コンポーネントファクトリーを使用して、コンポーネントセレクターを動的に設定することができます。
import { ComponentFactoryResolver, ComponentRef } from '@angular/core';
@Component({
selector: 'app-root',
templateUrl: './app.component.html'
})
export class AppComponent {
constructor(private readonly componentFactoryResolver: ComponentFactoryResolver) {
const componentFactory = this.componentFactoryResolver.resolveComponentFactory(MyComponent);
const componentRef = componentFactory.create(this.injector);
document.body.appendChild(componentRef.location.nativeElement);
}
}
@Component({
selector: 'my-component',
templateUrl: './my-component.html'
})
export class MyComponent {
// ...
}
この例では、AppComponent
は MyComponent
を動的に作成しています。
MyComponent
のコンポーネントセレクターは my-component
ですが、AppComponent
は componentFactory.create()
メソッドを使用して、コンポーネントセレクターを app-my-component
に変更しています。
例えば、Webpack を使用している場合は、以下のプラグインを使用することができます。
このプラグインは、コンポーネントセレクターを自動的に変更し、index.html
ファイルに適切なスクリプトタグを追加することができます。
Angular2 でコンポーネントのデフォルトプレフィックスを変更するには、いくつかの方法があります。
angular