1:插件使用,要在@NgModule 中的 declarations 中引入 不然报错 “ \ Changes detected. Rebuilding...X [ERROR] NG8001: 'sf-dashboard-overview' is not a known element:”
2:独立组件(组件、指令和管道),不需要在Module
中声明。
创建组件:
ng g c 组件名 --standalone
import { TranslateModule } from "@ngx-translate/core";
import { SharedModule } from "@shared/shared.module";
import { Component, } from "@angular/core";
@Component({
selector: "sf-print-to-pdf-pop-up",
standalone: true,
imports: [SharedModule, TranslateModule],//独立组件直接指定它们的依赖项,而不是通过 NgModule 获取它们。
templateUrl: "./print-to-pdf-pop-up.component.html",
styleUrl: "./print-to-pdf-pop-up.component.scss",
})
export class PrintToPdfPopUpComponent {}
- providers:组件使用的服务提供者,它可以向组件提供依赖项。
- inputs:定义组件的输入属性,它们用于从父组件传递数据到子组件。
- outputs:定义组件的输出属性,它们用于从子组件传递数据到父组件。
A、单独使用(弹出层)
B、内部使用(标签)
则要将其也变为独立组件,然后组件imports 导入 ,或在@NgModule的imports 导入才行,否则报错:元素找不到
组件imports
NgModule imports
3:路由跳转到只有参数变化的当前页面,页面没有变化,手动F5刷新才有变化。
this.activeRouter.params.subscribe(() => {//参数变化
this.updateProjectInfo(); //返回上一级,参数变化而根路由不变
});
private updateProjectInfo(): void {
}
ngOnInit(): void {//初始化
this.updateProjectInfo();
}
这是因为Angular的路由器实现了单页应用(SPA)的概念,它通过动态加载组件来实现页面的切换,而不是通过传统的页面刷新。这意味着组件的生命周期钩子函数(如ngOnInit、ngOnChanges等)不会再次触发。
如果需要在路由更改时刷新组件,可以通过以下几种方式实现:
使用路由事件监听器:可以在组件中订阅路由事件,当路由更改时手动刷新组件。
constructor(private router: Router) {
this.router.events.subscribe(event => {
if (event instanceof NavigationEnd) {
// 执行需要刷新的操作
}
});
}
使用路由参数订阅:如果路由参数的变化会导致组件需要刷新,可以通过订阅路由参数的变化来实现。
constructor(private route: ActivatedRoute) {
this.route.params.subscribe(params => {
// 执行需要刷新的操作
});
}
- 使用路由复用策略:可以通过自定义路由复用策略来控制组件的刷新行为。路由复用策略可以在路由配置中指定,根据具体需求来决定是否复用组件或者刷新组件。
需要注意的是,以上方法只是在路由更改时手动触发组件的刷新操作,具体的刷新逻辑需要根据实际需求来实现。