首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >this.storageService.addItem不是一个功能离子V4

this.storageService.addItem不是一个功能离子V4
EN

Stack Overflow用户
提问于 2020-01-31 23:40:16
回答 1查看 222关注 0票数 0

我有一个ToDo应用程序,我使用本地存储。当我尝试创建一个新的ToDo任务时,我有下一个问题:

代码语言:javascript
运行
复制
this.storageService.addItem is not a function 

我尝试了很多事情,但我一直有问题。

所有这些代码都是来自=> https://www.youtube.com/watch?v=h_IhS8QQjUA的视频

我和Ionic 4一起工作。

这是我的仓储服务:

代码语言:javascript
运行
复制
import { Injectable } from '@angular/core';
import { Storage } from '@ionic/storage';
export interface Item{
  id:number,
  title:string,
  value:string,
  modified:number
}
const ITEMS_KEY = 'my-items';

@Injectable({
  providedIn: 'root'
})
export class StorageService {

  constructor(private Storage:Storage) { }

  addItem(item:Item): Promise<any>{
    return this.Storage.get(ITEMS_KEY).then((items:Item[]) =>{
      if (items){
        items.push(item)
        return this.Storage.set(ITEMS_KEY, items);
      }else{
        return this.Storage.set(ITEMS_KEY, [item]);
      }
    });
  }

和我的添加页面

代码语言:javascript
运行
复制
import { Component, OnInit, ViewChild } from '@angular/core';
import { StorageService, Item } from '../services/storage.service';
import { Platform, ToastController,IonList } from '@ionic/angular';
import { Router } from '@angular/router';

@Component({
  selector: 'app-add',
  templateUrl: './add.page.html',
  styleUrls: ['./add.page.scss'],
})
export class AddPage  {
  Items: Item[] = []
  newItem: Item = <Item>{};
    @ViewChild('mylist', {static: false})mylist:IonList;
  constructor(private storageService: StorageService, private plt: Platform, private Toast: ToastController, private Router: Router) {
   }

    addItem(){
     this.newItem.modified =  Date.now();
     this.newItem.id =  Date.now();

      this.storageService.addItem(this.newItem).then(item =>{
       this.newItem = <Item>{};
       this.presentToast('Tarea Añadida!')
       this.Router.navigateByUrl('home');

     })
   }
   async presentToast(msg){
    const toast = await this.Toast.create({
      message:msg,
      duration: 2000
    })
    toast.present()
   }
}

在我的html添加页面中,我在输入中输入数据并使用绿色按钮提交

代码语言:javascript
运行
复制
<ion-header>
  <ion-toolbar>
    <ion-buttons slot="start">
      <ion-back-button defaultHref="home"></ion-back-button>
    </ion-buttons>
  </ion-toolbar>
</ion-header>

<ion-content class="ion-padding">
<ion-input type="text" placeholder="Titulo" [(ngModel)]="newItem.title"></ion-input>
<ion-item>
<ion-label position="floating">Agregar Tarea</ion-label>
  <ion-textarea [(ngModel)]="newItem.value"></ion-textarea>
</ion-item>
<ion-footer>
  <ion-button expand="block" color="success" (click)="addItem()" >Agregar!</ion-button>
</ion-footer>
</ion-content>
EN

Stack Overflow用户

发布于 2020-02-01 00:37:44

尝试使用不同的(从导入)名称注入存储,因为您当前的代码使用导入存储和注入存储,请在视频中注意代码不同:

代码语言:javascript
运行
复制
constructor(private storage:Storage) { }

  addItem(item:Item): Promise<any>{
    return this.storage.get(ITEMS_KEY).then((items:Item[]) =>{
      if (items){
        items.push(item)
        return this.storage.set(ITEMS_KEY, items);
      }else{
        return this.storage.set(ITEMS_KEY, [item]);
      }
    });
  }
票数 0
EN
查看全部 1 条回答
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/60012664

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档