[Angular 2] Using the @Inject decorator

TypeScript is used heavily as we build up our application, but TypeScript isn’t required. If you want to Inject a Service without using TypeScript, you’ll need to understand the @Inject decorator.

 

main.ts:

复制代码
import {Component, provide} from 'angular2/core';
import {bootstrap} from 'angular2/bootstrap';
import {TodoService} from './TodoService';
import {TodoInput} from './TodoInput';

@Component({
    selector: 'app',
    directives: [TodoInput],
    template: `
        <todo-input></todo-input>
    `
})

class App {
    
}

// []: we can inject service which can be used for the whole app
// use provide to inject service, when you don't want to use TypeScript
bootstrap(App, [
   provide('whatever', {useClass: TodoService})
]);
复制代码

 

TodoInput.ts:

复制代码
import {Component, Inject} from 'angular2/core';
import {TodoService} from './TodoService';

@Component({
    selector: 'todo-input',
    template: `
        <div>
            <input #myInput type="text">
            <button (click)="onClick(myInput.value)">Click me</button>
        </div>
    `
})

export class TodoInput{

    // If you don't want to use TypeScript
    constructor(@Inject('whatever') public todoService){

    }

    onClick(todo: string){
       this.todoService.todos.push(todo);
        console.log(this.todoService.todos);
    }
}
复制代码

 

TodoService.ts:

import {Injectable} from 'angular2/core';
@Injectable()  // If you don't want to use TypeScript
export class TodoService{
    todos = [];
}

 

posted @   Zhentiw  阅读(296)  评论(0编辑  收藏  举报
编辑推荐:
· SQL Server 2025 AI相关能力初探
· Linux系列:如何用 C#调用 C方法造成内存泄露
· AI与.NET技术实操系列(二):开始使用ML.NET
· 记一次.NET内存居高不下排查解决与启示
· 探究高空视频全景AR技术的实现原理
阅读排行:
· 阿里最新开源QwQ-32B,效果媲美deepseek-r1满血版,部署成本又又又降低了!
· Manus重磅发布:全球首款通用AI代理技术深度解析与实战指南
· 开源Multi-agent AI智能体框架aevatar.ai,欢迎大家贡献代码
· 被坑几百块钱后,我竟然真的恢复了删除的微信聊天记录!
· AI技术革命,工作效率10个最佳AI工具
历史上的今天:
2015-03-20 [Javascript] Get Started with LeafletJS Mapping
2015-03-20 [Javascript] Gradient Fills on the HTML5 Canvas
点击右上角即可分享
微信分享提示