Go to file
Miško Hevery d169c2434e feat(core): Add type information to injector.get() (#13785)
- Introduce `InjectionToken<T>` which is a parameterized and type-safe
  version of `OpaqueToken`.

DEPRECATION:
- `OpaqueToken` is now deprecated, use `InjectionToken<T>` instead.
- `Injector.get(token: any, notFoundValue?: any): any` is now deprecated
  use the same method which is now overloaded as
  `Injector.get<T>(token: Type<T>|InjectionToken<T>, notFoundValue?: T): T;`.

Migration
- Replace `OpaqueToken` with `InjectionToken<?>` and parameterize it.
- Migrate your code to only use `Type<?>` or `InjectionToken<?>` as
  injection tokens. Using other tokens will not be supported in the
  future.

BREAKING CHANGE:
- Because `injector.get()` is now parameterize it is possible that code
  which used to work no longer type checks. Example would be if one
  injects `Foo` but configures it as `{provide: Foo, useClass: MockFoo}`.
  The injection instance will be that of `MockFoo` but the type will be
  `Foo` instead of `any` as in the past. This means that it was possible
  to call a method on `MockFoo` in the past which now will fail type
  check. See this example:

```
class Foo {}
class MockFoo extends Foo {
  setupMock();
}

var PROVIDERS = [
  {provide: Foo, useClass: MockFoo}
];

...

function myTest(injector: Injector) {
  var foo = injector.get(Foo);
  // This line used to work since `foo` used to be `any` before this
  // change, it will now be `Foo`, and `Foo` does not have `setUpMock()`.
  // The fix is to downcast: `injector.get(Foo) as MockFoo`.
  foo.setUpMock();
}
```

PR Close #13785
2017-01-17 15:34:54 -06:00
.github docs(gh): try to improve the issue template (#11891) 2016-09-30 16:40:56 -07:00
docs docs(release-schedule): add release schedule doc (#13827) 2017-01-11 13:22:50 -08:00
modules feat(core): Add type information to injector.get() (#13785) 2017-01-17 15:34:54 -06:00
scripts fix(language-service): support TypeScript 2.1 (#13655) 2017-01-05 11:34:42 -08:00
tools feat(core): Add type information to injector.get() (#13785) 2017-01-17 15:34:54 -06:00
.bowerrc chore(dgeni): clean up legacy typings bundle creation 2015-10-29 21:19:59 +00:00
.clang-format feat(tooling): Add a .clang-format for automated JavaScript formatting. 2015-04-02 08:44:34 -07:00
.editorconfig chore(.editorconfig): include markdown config 2015-01-27 00:14:48 -08:00
.gitattributes chore: force lf EOL for ts files (#11143) 2016-08-29 12:41:58 -07:00
.gitignore chore(git): cleanup .gitignore 2016-09-02 15:58:46 -07:00
.nvmrc chore(node): allow current node version 2016-09-19 16:24:31 -07:00
.pullapprove.yml chore(owners): configure pullapprove.com 2017-01-10 20:56:52 -05:00
.travis.yml chore(ci): re-enable browserstack tests in ci 2016-10-20 10:01:51 -07:00
CHANGELOG.md docs(changelog): fix typo (#13934) 2017-01-17 15:34:53 -06:00
COMMITTER.md chore(docs): update the merge process docs 2015-12-23 02:32:02 +00:00
CONTRIBUTING.md docs(contributing): fix styleguide link and typos (#13198) 2016-12-05 10:25:20 -08:00
DEVELOPER.md docs(developer): add linting section and correct command to verify API changes 2017-01-03 14:08:52 -08:00
LICENSE Update change from Apache to MIT license 2016-01-08 13:41:58 -08:00
NAMING.md refactor(ngProbe): rename to ng.probe 2015-08-31 21:32:10 +00:00
README.md docs(readme): remove incorrect download count badge 2016-10-05 11:37:28 -07:00
SAVED_REPLIES.md docs(saved-replies): order the replies as shown in github (#12153) 2016-10-07 13:52:18 -07:00
TOOLS.md chore(docs): remove sentences for dart (#10781) 2016-08-16 19:38:49 -07:00
TRIAGE_AND_LABELS.md doc: update triage owners for language service and router (#13325) 2016-12-08 15:42:34 -08:00
bower.json refactor(benchmarks): make tree benchmark work again 2016-08-29 12:42:57 -07:00
browser-providers.conf.js ci(browser providers): update browsers in SL and BS (#13431) 2016-12-13 11:32:31 -08:00
build.sh fix(language-service): update to use `CompilerHost` from compiler-cli (#13189) 2016-12-02 14:34:16 -08:00
circle.yml fix(ci): pin version of npm on CircleCI (#12954) 2016-11-17 17:27:51 -08:00
gulpfile.js chore(lint): extend linting to all modules and tools 2016-10-31 14:24:27 -07:00
karma-js.conf.js fix(upgrade): fix `registerForNg1Tests` (#13522) 2016-12-16 15:14:16 -08:00
npm-shrinkwrap.clean.json chore(tslint): update tslint to 4.x (#13603) 2016-12-27 14:55:58 -08:00
npm-shrinkwrap.json chore(tslint): update tslint to 4.x (#13603) 2016-12-27 14:55:58 -08:00
npm-shrinkwrap.readme.md chore(lint): replace gulp check-task with tslint no-jasmine-focus rule 2016-10-28 15:53:15 -07:00
package.json chore(release): cut the 4.0.0-beta.3 release 2017-01-11 14:25:16 -08:00
protractor-e2e.conf.js refactor: add license header to JS files & format files (#12081) 2016-10-04 20:39:20 -07:00
protractor-examples-e2e.conf.js refactor: format and lint code 2016-12-12 11:30:25 -08:00
protractor-perf.conf.js refactor: add license header to JS files & format files (#12081) 2016-10-04 20:39:20 -07:00
publish-packages.sh fix: display framework version on bootstrapped component (#13252) 2016-12-06 16:21:07 -08:00
shims_for_IE.js Revert "refactor: add license header to JS files & format files (#12035)" 2016-10-04 14:06:41 -07:00
test-main.js fix: correctly show error when karma fails to load 2017-01-06 19:30:09 -05:00
test.sh refactor(compiler): remove unneeded fields from metadata 2016-11-28 15:19:23 -08:00
tslint.json build(tslint): enable no-inner-declarations (#13316) 2016-12-08 13:46:08 -08:00

README.md

Build Status CircleCI Join the chat at https://gitter.im/angular/angular Issue Stats Issue Stats npm version

Sauce Test Status
Safari (7+), iOS (7+), Edge (14) and IE mobile (11) are tested on BrowserStack.

Angular

Angular is a development platform for building mobile and desktop web applications. This is the repository for Angular 2 Typescript/JavaScript (JS).

Angular2 for Dart can be found at dart-lang/angular2.

Quickstart

Get started in 5 minutes.

Want to help?

Want to file a bug, contribute some code, or improve documentation? Excellent! Read up on our guidelines for contributing and then check out one of our issues in the hotlist: community-help.