Deliver web apps with confidence 🚀
Find a file
Alex Rickabaugh fa52b6e906 feat(core): options object to supersede bit flags for inject() (#46649)
`inject()` originated as a private API and was made public to support
`InjectionToken` factories in Ivy. For code-size and performance reasons,
when we code generate `inject()` calls we use a bit field to indicate the
various injection modes (optional, skip-self, etc). However, this doesn't
make for a very nice public API.

This commit introduces an alternative object-based API for options. All 4
flags are supported as `boolean` fields on an options object, and converted
to bit flags internally. If TypeScript can prove that `optional` injection
is not requested, it can narrow the return type and remove the `null` type.

DEPRECATED:

The bit field signature of `inject()` has been deprecated, in favor of the
new options object. Correspondingly, `InjectFlags` is deprecated as well.

Fixes #46251

PR Close #46649
2022-07-01 10:21:18 -07:00
.circleci build: re-enable components-repo-unit-tests job (#46604) 2022-06-29 10:07:19 -07:00
.devcontainer ci: update default circle ci image to cimg/node:14.17.6 (#43810) 2021-10-12 17:43:15 +00:00
.github build: update cross-repo angular dependencies (#46642) 2022-07-01 10:20:51 -07:00
.husky build: remove unnecessary husky gitignore file (#42870) 2021-07-19 17:31:55 -07:00
.ng-dev ci: update .ng-dev pull request config to reflect recent API changes (#46642) 2022-07-01 10:20:51 -07:00
.vscode docs: added commas to sentences in .vscode/README.md (#43684) 2021-10-21 18:39:58 +00:00
.yarn build: update to yarn v1.22.17 (#44150) 2021-11-15 11:19:05 -08:00
aio build: update cross-repo angular dependencies (#46642) 2022-07-01 10:20:51 -07:00
devtools build: simplify sass consumption of Angular CDK/Material in devtools (#46642) 2022-07-01 10:20:51 -07:00
docs build: remove scripts and documentation about individual usage of RBE (#46515) 2022-06-27 10:50:08 -07:00
goldens feat(core): options object to supersede bit flags for inject() (#46649) 2022-07-01 10:21:18 -07:00
integration test: update cli-hello-world-ivy-i18n integration test to use ng extract-i18n (#46642) 2022-07-01 10:20:51 -07:00
modules test(core): remove renderComponent-based benchmarks (#46568) 2022-06-28 21:42:45 -07:00
packages feat(core): options object to supersede bit flags for inject() (#46649) 2022-07-01 10:21:18 -07:00
scripts ci: do not run firefox components repo tests (#46624) 2022-06-29 12:56:45 -07:00
third_party test: remove unused intl polyfill from tests and third_party vendoring (#46512) 2022-06-27 09:03:48 -07:00
tools build: account for app_bundle rule location change (#46642) 2022-07-01 10:20:51 -07:00
.bazelignore refactor(devtools): bring the angular devtools directory into the root bazel workspace 2022-01-26 16:35:31 -05:00
.bazelrc build: convert release package build scripts to typescript (#46456) 2022-06-22 14:35:31 -07:00
.bazelversion build: update to bazel v5 for new runfiles API used in dev-infra (#45407) 2022-03-21 16:55:36 -07:00
.clang-format feat(tooling): Add a .clang-format for automated JavaScript formatting. 2015-04-02 08:44:34 -07:00
.editorconfig build: use https link to editorconfig.org in .editorconfig (#27664) 2018-12-18 09:30:09 -08:00
.gitattributes build: cleanup .gitattributes file and remove outdated CRLF attribute (#46513) 2022-06-28 13:38:27 -07:00
.gitignore ci: fix stamping for builds performed in CI (#45147) 2022-02-25 19:14:05 +00:00
.gitmessage build: clean up references to old master branch (#45856) 2022-05-04 16:23:33 -07:00
.mailmap build: add a Git .mailmap with my new name (#19550) 2017-10-09 14:35:30 -07:00
.npmrc build: rely on engines to prevent using npm for dependency install (#41477) 2021-04-07 12:05:01 -07:00
.nvmrc build: update repository to node@16 locally (#44211) 2021-11-24 18:55:33 +00:00
.prettierrc ci: use prettier to format yml files (#42136) 2021-05-19 11:20:20 -07:00
.pullapprove.yml ci: fix pullapprove fnmatch patterns due to recent changes (#46589) 2022-06-29 10:33:05 -07:00
.yarnrc build: update to yarn v1.22.17 (#44150) 2021-11-15 11:19:05 -08:00
browser-providers.conf.js ci: enable Android 12 for tests on CI (#45926) 2022-05-09 11:26:10 -07:00
BUILD.bazel test: avoid test fixture affecting zone in all web tests (#46511) 2022-06-27 15:46:41 -07:00
CHANGELOG.md release: cut the v14.1.0-next.3 release (#46622) 2022-06-29 11:24:18 -07:00
CHANGELOG_ARCHIVE.md docs: move old changelog entries to a separate file (#45638) 2022-04-14 15:01:21 -07:00
CODE_OF_CONDUCT.md docs: add Discord as an official communication channel (#39149) 2020-10-14 10:23:15 -07:00
CONTRIBUTING.md build: account for rename of angular/code-of-conduct default branch (#46640) 2022-06-30 12:44:05 -07:00
gulpfile.js build: remove the unused source-map-test (#46518) 2022-06-27 15:42:43 -07:00
karma-js.conf.js test: avoid test fixture affecting zone in all web tests (#46511) 2022-06-27 15:46:41 -07:00
LICENSE build: bump license year (#44590) 2022-01-04 12:05:25 -08:00
package.json build: update cross-repo angular dependencies (#46642) 2022-07-01 10:20:51 -07:00
README.md docs(core): add circleci insights metrics widget (#46496) 2022-06-24 17:04:06 -07:00
renovate.json ci: enable renovate commit message body table to fix minimum commit message (#46611) 2022-06-29 10:15:01 -07:00
tsconfig-tslint.json refactor(devtools): run ng-dev format on angular devtools files 2022-01-26 16:35:30 -05:00
tslint.json refactor(devtools): bring the angular devtools directory into the root bazel workspace 2022-01-26 16:35:31 -05:00
WORKSPACE build(bazel): enable runfiles (#46313) 2022-06-14 16:58:19 +00:00
yarn.lock build: update cross-repo angular dependencies (#46642) 2022-07-01 10:20:51 -07:00
yarn.lock.readme.md build: clean up references to old master branch (#45856) 2022-05-04 16:23:33 -07:00

Angular - The modern web developer's platform.

angular-logo
Angular is a development platform for building mobile and desktop web applications
using Typescript/JavaScript and other languages.

www.angular.io

Contributing Guidelines · Submit an Issue · Blog

CI status   Angular on npm   Discord conversation

InsightsSnapshot


Documentation

Get started with Angular, learn the fundamentals and explore advanced topics on our documentation website.

Advanced

Development Setup

Prerequisites

Setting Up a Project

Install the Angular CLI globally:

npm install -g @angular/cli

Create workspace:

ng new [PROJECT NAME]

Run the application:

cd [PROJECT NAME]
ng serve

Angular is cross-platform, fast, scalable, has incredible tooling, and is loved by millions.

Quickstart

Get started in 5 minutes.

Ecosystem

angular ecosystem logos

Changelog

Learn about the latest improvements.

Upgrading

Check out our upgrade guide to find out the best way to upgrade your project.

Contributing

Contributing Guidelines

Read through our contributing guidelines to learn about our submission process, coding rules and more.

Want to Help?

Want to report a bug, contribute some code, or improve documentation? Excellent! Read up on our guidelines for contributing and then check out one of our issues labeled as help wanted or good first issue.

Code of Conduct

Help us keep Angular open and inclusive. Please read and follow our Code of Conduct.

Community

Join the conversation and help the community.

Love Angular badge

Love Angular? Give our repo a star ⬆️.