Typescript类方法无法识别

时间:2016-12-14 19:50:54

标签: angular typescript systemjs

我在使用导入它们的类方法时遇到问题。

这是我的课程

cloneable.ts

export interface Cloneable<T> {
    clone() : T;
}

task.ts

import { Cloneable } from './cloneable'

export class Task implements Cloneable<Task>  {
    name: string;
    finished: boolean;

    constructor(name: string = "", finished: boolean = false) {
        this.name = name;
        this.finished = finished;
    }

    clone() : Task {
        return new Task(this.name, this.finished);
    }
}

我在另一个文件中使用Task

todoItem.component.ts

import { Component, Input } from '@angular/core';
import { Task } from '../../model/task'

@Component({
  selector: 'todo-item',
  templateUrl: './app/todoItem/todoItem.component.html',
  styleUrls: ['./app/todoItem/todoItem.component.css']
})
export class TodoItemComponent {
  @Input() name: string;
  @Input() tasks: Task[];
  currentEdited: { original: Task, toEdit: Task } = null;

  startEditing = function(task: Task) {
    this.cancelEditing();
    this.currentEdited = { original: task, toEdit: new Task(task.name, task.finished) };  // problematic line
  }

  // uninteresting code
}

错误

http://localhost:3000/model/task Failed to load resource: the server responded with a status of 404 (Not Found)
localhost/:14 Error: (SystemJS) XHR error (404 Not Found) loading http://localhost:3000/model/task(…)(anonymous function) @ localhost/:14

这是localhost /:14

<script>
      System.import('app').catch(function(err){ console.error(err); });
</script>

注意行
this.currentEdited = { original: task, toEdit: new Task(task.name, task.finished) };

我认为实现目标有两种选择

  1. this.currentEdited = { original: task, toEdit: new Task(task.name, task.finished) };
  2. this.currentEdited = { original: task, toEdit: task.clone() };
  3. 虽然,当我不使用类方法时,它可以工作,但我不创建克隆this.currentEdited = { original: task, toEdit: task };

    之前发生过这种情况,但是我没有办法解决这个问题所以我只是访问了班级成员,但我想我应该解决这个问题。

    这是我的tryout angular2项目,只是了解angular2。

1 个答案:

答案 0 :(得分:0)

在文件 todoItem.component.ts 中,存在脚本引用错误,前导路径中有一对多.

import { Task } from './../model/task'

或者它确实是另一个目录

import { Task } from './../../model/task'

不是这个,因为你应该以{{1​​}}

为前缀
./

这就是错误读取无法找到文件的原因(404)

  

http://localhost:3000/model/task无法加载资源:服务器响应状态为404(未找到)