angular2 开发遇到的问题

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 => {
    // 执行需要刷新的操作
  });
}
  1. 使用路由复用策略:可以通过自定义路由复用策略来控制组件的刷新行为。路由复用策略可以在路由配置中指定,根据具体需求来决定是否复用组件或者刷新组件。

需要注意的是,以上方法只是在路由更改时手动触发组件的刷新操作,具体的刷新逻辑需要根据实际需求来实现。

  • 8
    点赞
  • 7
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值