Angular5中使用BsDatePicker报错Cannot read property 'schedule' of undefined求助
排查BsDatePicker的
Cannot read property 'schedule' of undefined错误与开发警告 嘿,我来帮你解决这个问题!你的两个问题其实都和版本兼容性直接相关,再加上一个容易忽略的组件变量声明点,咱们一步步来:
核心问题:版本不匹配
你用的ngx-bootstrap 3.0.0是为**Angular 6+**设计的,而你的项目基于Angular 5,这种版本错位直接导致了schedule未定义的报错。另外那个BsDatepickerModule is under development的警告,也是因为3.x版本的日期选择器还处于迭代开发阶段,本身就带有这个提示。
具体解决方案
1. 降级ngx-bootstrap到Angular5兼容版本
先卸载当前的3.0.0版本,安装适配Angular5的2.x稳定版:
npm uninstall ngx-bootstrap --save npm install ngx-bootstrap@2.0.5 --save
(2.0.5是2.x系列中支持Angular5的最新稳定版,你也可以选择同系列的其他版本)
2. 确保组件中声明了绑定变量
检查你使用日期选择器的组件(比如CreateEmployeeComponent),必须在类里定义dateOfBirth变量,否则双向绑定[(ngModel)]会找不到目标:
// create-employee.component.ts import { Component } from '@angular/core'; @Component({ selector: 'app-create-employee', templateUrl: './create-employee.component.html' }) export class CreateEmployeeComponent { // 一定要声明这个变量! dateOfBirth: Date; // 你的其他组件逻辑代码... }
3. 确认现有配置无误
你的现有配置大部分是正确的,再快速核对这几点:
AppModule里已经正确导入BsDatepickerModule.forRoot()和FormsModule(你已经做对了).angular-cli.json里的样式和脚本引入都没问题,bootstrap和datepicker的样式都加载了- 2.x版本的datepicker在Angular5下不需要额外引入
BrowserAnimationsModule,不用加这个
最后验证
做完上面的步骤,重启你的Angular开发服务器:
ng serve
这时候那个schedule未定义的错误应该会消失,开发警告也会跟着不见,BsDatePicker组件就能正常工作啦!
内容的提问来源于stack exchange,提问作者Alain
相关产品推荐
相关产品推荐

