我是否必须在@ngModule中注册每个管道?我有一个仅由单个特定组件使用的。很高兴在同一个文件中声明它,所以没有其他人知道它。 我相信以前是可能的 - 只是找不到合适的语法。
谢谢。
答案 0 :(得分:7)
必须在模块中声明每个管道,组件和指令。这是因为编译器依赖于模块的声明来解析模板。如果模块的声明(或导入模块的声明)中没有看到MyPipe
,那么在模板中使用管道时它不会查找它也不会识别它
如果重要的是没有其他组件能够看到您的管道,请创建一个仅包含使用管道和管道本身的组件的模块,并且不要导出管道。
import { NgModule } from '@angular/core';
import { CommonModule } from '@angular/common';
import { MyPipe } from './my.pipe';
import { MyComponent } from './my.component';
@NgModule({
imports: [ CommonModule ],
declarations: [ MyComponent, MyPipe ],
exports: [], // don't export what you want to keep private
providers: []
})
export class MyModule { }
答案 1 :(得分:1)
自RC6起,ComponentTypeMetadata
属性已从NgModule
中移除,您必须在<?php
$data = <<<DATA
<div>
<p>These line shall stay</p>
<p class="myclass">Remove this one</p>
<p>But keep this</p>
<div style="color: red">and this</div>
</div>
DATA;
$dom = new DOMDOcument();
$dom->loadHTML($data, LIBXML_HTML_NOIMPLIED);
$dom->removeChild($dom->doctype);
$xpath = new DOMXPath($dom);
$lines_to_be_removed = $xpath->query("//*[count(@*)>0]");
foreach ($lines_to_be_removed as $line) {
$line->parentNode->removeChild($line);
}
// just to check
echo $dom->saveHTML();
?>
中注册。