【问题标题】:Typescript TypeError:Cannot read property of undefinedTypescript TypeError:无法读取未定义的属性
【发布时间】:2018-03-13 14:20:18
【问题描述】:

我是打字稿的新手。我认为这个问题与打字稿有关。 我正在构建一个离子应用程序。我从 home.html 调用函数 setwall()。我在 home.ts 中定义了 setwall() 函数。当我运行 ionic 应用程序时显示

Runtime Error
Uncaught (in promise): TypeError: Cannot read property 'wallpaper' of undefined TypeError: Cannot read property 'wallpaper' of undefined"

这是我的 home.ts 代码。

import { Component } from '@angular/core';
import { NavController,Platform } from 'ionic-angular';
import { ListPage } from '../list/list';

declare var window: any;
@Component({
  selector: 'page-home',
  templateUrl: 'home.html'
})
export class HomePage {
  constructor(public navCtrl: NavController,private platform: Platform) {
}
goPage1(){
  this.navCtrl.push(ListPage);
}
setwall(){
  this.platform.ready().then(() => {
  window['plugins'].wallpaper.setImage("assets/img/3.jpg");
});
}
} 

还有更多信息: 这是home.html代码

<ion-header>
  <ion-navbar>
    <button ion-button menuToggle>
      <ion-icon name="menu"></ion-icon>
    </button>
    <ion-title>Wallfeed</ion-title>
  </ion-navbar>
</ion-header>

<ion-content class="card-background-page">

    <ion-card (click)="goPage1()">
      <img src="assets/img/1.png"/>
      <div class="card-title">São Paulo</div>
      <div class="card-subtitle">41 Listings</div>
    </ion-card>

    <ion-card>
      <img src="assets/img/2.jpg"/>
      <div class="card-title">Amsterdam</div>
      <div class="card-subtitle">64 Listings</div>
    </ion-card>

    <ion-card (click)="setwall()">
      <img src="assets/img/3.jpg"/>
      <div class="card-title">San Francisco</div>
      <div class="card-subtitle">72 Listings</div>
    </ion-card>

    <ion-card>
      <img src="https://encrypted-tbn0.gstatic.com/images?q=tbn:ANd9GcQ16sUl5EqIDeuP1AjIX6ESSbAFAcS2-JLr4znf-extlfIr47Ni"/>
      <div class="card-title">Madison</div>
      <div class="card-subtitle">28 Listings</div>
    </ion-card>

  </ion-content>

cordova 插件链接:https://github.com/fbsanches/cordova-plugin-wallpaper 谢谢。

【问题讨论】:

  • window.pluginsundefined
  • 这样说会不会太过分了:有人给这个 ^ 家伙一枚奖章
  • @Dellirium¯\_(ツ)_/¯
  • Newbie.Confused.Care to解释发生了什么?

标签: angular cordova typescript cordova-plugins ionic3


【解决方案1】:

你可以试试如下图。

declare var window: any;

@Component({
selector: 'page-home',
templateUrl: 'home.html'
})
export class HomePage {
constructor(public navCtrl: NavController,private platform: Platform) {

 }

 goPage1(){
   this.navCtrl.push(ListPage);
  }

 setwall(){
    this.platform.ready().then(() => {
    window.plugins.wallpaper.setImage("./assets/img/3.jpg"); //Changed here
  });
 }
} 

【讨论】:

    猜你喜欢
    • 2017-11-02
    • 1970-01-01
    • 2020-12-20
    • 1970-01-01
    • 2018-08-16
    • 2018-02-12
    • 2021-07-09
    • 1970-01-01
    • 2021-10-31
    相关资源
    最近更新 更多