javascript - angular 2服务注入(inject)问题

标签 javascript angular dependency-injection composition

我的项目结构:

enter image description here

app.component.ts:

import { Component } from "@angular/core"
import { Todo } from './components/shared/todo.model'
import { todos } from "./components/shared/todo.data"
import {TodoService} from "./components/shared/todoService"
import {TodoService} from "./components/shared/todoService";

@Component({
    moduleId: module.id,
    selector: "app",
    templateUrl: "app.component.html",
    styleUrls: ['app.component.css'],
    providers: [TodoService]
})
export class AppComponent {
    title:string = "Angular 2Do";
}

todo-form.component.ts:

import {Component, Output, EventEmitter} from "@angular/core";
import {Todo} from "../shared/todo.model";
import {TodoService} from "../shared/todoService"

@Component({
    moduleId: module.id,
    selector: "todo-form",
    templateUrl: "todo-form.component.html",
    styleUrls: ["todo-form.component.css"],
})
export class TodoForm {
    ...
    constructor(private todoService:TodoService) {
        console.log(this.todoService);
        this.todoService.order = 2;
        console.log( this.todoService);
    }

}

todo-list.component.ts:

import {Component, Input, OnInit} from "@angular/core"

import { ITodo } from "../shared/todo.model"
import { TodoService } from "../shared/todoService"

@Component({
    moduleId: module.id,
    selector: "todo-list",
    templateUrl: "todo-list.component.html",
    styleUrls: ["todo-list.component.css"],
})
export class TodoListComponent implements OnInit {
    todos:ITodo[];

    ...

    constructor(private todoService:TodoService) {
        ...
        console.log(this.todoService);
        this.todoService.order=1;
        console.log(this.todoService);

    }
   ...

}

applistform 组件的父级

当我启动我在控制台中看到的应用程序时:

enter image description here

但如果展开所有我看到的:

enter image description here

哪个结果是实际的,为什么在第二个 View 中我看到 1 而在另一个 View 中看到 2

最佳答案

console.log 的“+”按钮只能显示对象的当前状态,不能显示对象在调用时的快照。

参见 console.log() async or sync?以获得更深入的解释。

所以 order: 1, 是对象的最终状态。

关于javascript - angular 2服务注入(inject)问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41160538/

相关文章:

javascript - 过渡仅适用于调试

javascript - Angular 图表.js : how to show numbers in each bar of stacked bar chart

javascript - 使用模块 xlsx 样式时无法找到命名空间 XLSX

java - 注入(inject)非 bean 属性的最佳实践

c# - 在 Azure 应用程序中为两个存储帐户设置依赖项注入(inject)

javascript - 如何回到 AngularJS 中对象的脏状态之前

javascript - 根据日期数组检查日期

Angular 设置下拉选择选项作为迭代前的默认选择

angular - ctx。在 Angular 中未定义

dependency-injection - 使用来自请求的信息的 AddTransient 服务