{"action":"created","comment":{"url":"https://api.github.com/repos/angular/angular.io/pulls/comments/95081832","pull_request_review_id":15626593,"id":95081832,"diff_hunk":"@@ -0,0 +1,885 @@\n+include ../_util-fns\n+\n+:marked\n+  _Reactive forms_ is an Angular technology for creating data entry forms in a _reactive_ style.\n+  This guide explains reactive forms as you follow the steps to build a \"Hero Detail Editor\" form.\n+\n+a#toc\n+:marked\n+  ## Contents\n+\n+  - [Introduction to reactive forms](#intro)\n+  - [Setup](#setup)\n+  - [Create a data model](#data-model)\n+  - [Create a _reactive forms_ component](#create-component)\n+  - [Create its template file](#create-template)\n+  - [Import the _ReactiveFormsModule_](#import)\n+  - [Update the app to use the form component](#update)\n+  - [Introduction to _FormBuilder_](#formbuilder)\n+  - [Group _FormControls_](#grouping)\n+  - [Inspect _FormControl_ properties](#properties)\n+  - [Set form model data using _setValue_ and _patchValue_](#set-data)\n+  - [Use _FormArray_ to present an array of _FormGroups_](#form-array)\n+  - [Watch control changes](#watch-control)\n+  - [Save form data](#save)\n+\n+  Try the <live-example plnkr=\"final\" title=\"Reactive Forms (final) in Plunker\">Reactive Forms live-example</live-example>.\n+\n+  You can also run the <live-example title=\"Reactive Forms Demo in Plunker\">Reactive Forms Demo</live-example> version\n+  and choose one of the intermediate steps from the \"demo picker\" at the top.\n+\n+a#intro\n+:marked\n+  ## Introduction to Reactive Forms\n+\n+  Angular offers two form-building technologies: _reactive_ forms and _template-driven_ forms.\n+  The two technologies belong to the `@angular/forms` library\n+  and share a common set of form control classes.\n+\n+  But they diverge markedly in philosophy, programming style, and technique.\n+  They even have their own modules: the `ReactiveFormsModule` and the `FormsModule`.\n+\n+  ### _Reactive_ forms\n+  Angular _reactive_ forms facilitate a _reactive style_ of programming \n+  that favors explicit management of the data flowing between\n+  a non-UI _data model_ (typically retrieved from a server) and a \n+  UI-oriented _form model_ that retains the states \n+  and values of the HTML controls on screen.\n+\n+  With _reactive_ forms, you create a tree of Angular form controls in code, and \n+  bind them to HTML widgets in the component template, using techniques described in this guide.\n+\n+  The component class is responsible for all data flowing between the component and the screen.\n+  It has immediate access to both the data model and the form control structure. \n+  It pushes data model values into the form controls and \n+  pulls user-changed values back out of the form controls.\n+  The component can _observe_ changes in form control state and _react_ to those changes.\n+\n+  In keeping with the reactive paradigm, the component should preserve the immutability of the _data model_,\n+  treating it as a pure source of original values.\n+  Rather than update the data model directly, \n+  the component extracts user changes and forwards them to an external component or service,\n+  which does something with them (such as saving them) \n+  and returns a new _data model_ to the component that reflects the updated model state.\n+\n+  ### _Template-driven_ forms\n+\n+  _Template-driven_ forms, introduced in the [Template guide](forms.html), take a completely different approach.\n+  \n+  You place HTML form controls (such as `<input>` and `<select>`) in the component template and \n+  bind them to _data model_ properties in the component, using the `[(ngModel)]` two-way data binding directive.\n+  \n+  You don't create Angular form controls. Angular infers them from the data bindings.\n+  You don't push and pull data values. Angular handles that for you with `[(ngModel)]`.\n+  Angular updates the mutable _data model_ with user changes as they happen.\n+\n+  Both data binding and the mutable _data model_ are contrary to reactive principles.\n+  In fact, the `ngModel` directive is only available in the `FormsModule`, not in the `ReactiveFormsModule`.\n+\n+  These diffences don't make _template-driven forms_ wrong and _reactive forms_ right.\n+  These are different architectural paradigms, with their own strengths and weaknesses,\n+  and you are free to choose between them.\n+\n+  The balance of this _reactive forms_ guide assumes the _reactive_ paradigm and \n+  concentrates exclusively on the reactive forms technology and techniques. For \n+  information on _template driven forms_, see the [Template Guide](forms.html).\n+\n+  You'll learn about reactive forms by building one from scratch,\n+  with instances of the Angular form classes.\n+\n+  ### Essential form classes\n+\n+  Before you begin, it may be helpful to read a brief description of the core form classes.\n+  \n+  * [_AbstractControl_](../api/forms/index/AbstractControl-class.html-class.html \"API Reference: AbstractControl\")\n+  is the abstract base class for the three concrete form control classes: \n+  `FormControl`, `FormGroup`, and `FormArray`.\n+  It provides their common behaviors and properties, some of which are _observable_.\n+\n+  * [_FormControl_](../api/forms/index/FormControl-class.html \"API Reference: FormControl\") \n+  tracks the value and validity status of an _individual_ form control.\n+  It corresponds to an HTML form control such as an input box or selector.\n+\n+  * [_FormGroup_](../api/forms/index/FormGroup-class.html \"API Reference: FormGroup\")\n+  tracks the value and validity state of a _group_ of `AbstractControl` instances.\n+  The group's properties include its child controls.\n+  The top-level form in your component is a `FormGroup`.\n+\n+  * [_FormArray_](../api/forms/index/FormArray-class.html \"API Reference: FormArray\")\n+  tracks the value and validity state of a numerically indexed _array_ of `AbstractControl` instances.\n+\n+  You'll learn more about these classes as you build your first reactive form.\n+\n+.l-main-section\n+a#setup\n+:marked\n+  ## Setup\n+\n+  Follow the steps in the [_Setup_ guide](../setup.html \"Setup guide\") \n+  for creating a new project folder (perhaps called `reactive-forms`)\n+  based on the _QuickStart seed_.\n+\n+.l-main-section\n+a#data-model\n+:marked\n+  ## Create a data model\n+  The focus of this guide is a reactive forms component that edits a hero.\n+  You'll need a `hero` class and some hero data.\n+  Create a new `data-model.ts` file in the `app` directory and copy the content below into it.\n+\n++makeExample('reactive-forms/ts/app/data-model.ts', '','app/data-model.ts')(format=\".\")\n+\n+:marked\n+  The file exports two classes and two constants. The `Address` \n+  and `Hero` classes define the application _data model_. \n+  The `heroes` and `states` constants supply the test data. \n+\n+.l-main-section\n+a#create-component\n+:marked\n+  ## Create a _reactive forms_ component\n+  Make a new file called \n+  `hero-detail.component.ts` in the `app` directory and import these symbols:\n+\n++makeExample('reactive-forms/ts/app/hero-detail.component.ts', 'reactive-comp-imports','app/hero-detail.component.ts')(format=\".\")\n+\n+:marked\n+  Here’s a summary description of the imported symbols, whose meaning and use\n+  will become clear over the course of this guide:\n+\n+  - `Component`: the Angular decorator that describes the component in metadata.\n+  - `EventEmitter`: a class that emits events that are handled by a parent component.\n+  - `Input`: identifies a component's public input properties for data binding by a parent component.\n+  - `Output`: identifies a component's public output properties for data binding by a parent component.  \n+  - `OnChanges`: a component lifecycle hook that Angular calls when input values change.\n+  - `FormArray`: an array of `FormControls`.\n+  - `FormBuilder`: a builder of `FormControls`, `FormGroups`, and `FormArrays`.\n+  - `FormControl`: a representation of an HTML form control.\n+  - `FormGroup`: a group of `FormControls`, `FormArrays`, and other `FormGroups`.\n+  - `Address` and `Hero` are application model classes.\n+  - `states`: U.S. states (test data). \n+\n+  Now enter the `@Component` decorator that specifies the `HeroDetailComponent` metadata:\n+\n++makeExample('reactive-forms/ts/app/hero-detail.component.ts', 'reactive-comp-metadata','app/hero-detail.component.ts (excerpt)')(format=\".\")\n+\n+:marked\n+  The `moduleId: module.id` lets you use \n+  [component-relative paths](./cookbook/component-relative-paths.html) in file URLs. \n+  The `selector` tells Angular the name of the element tag that renders this form. \n+  The `templateUrl` is the location of the HTML template that displays the form.\n+\n+  Next, create an exported `HeroDetailComponent` class with a `FormControl`. \n+\n++makeExample('reactive-forms/ts/app/hero-detail-versions.component.ts', 'v1','app/hero-detail.component.ts (excerpt)')(format=\".\")\n+\n+:marked\n+  Inside the `FormGroup`, called `heroForm`, is a `FormControl` called `name`.\n+  It will be bound in the template to an HTML `input` box for the hero name. \n+\n+  A `FormControl` constructor accepts three, optional arguments: \n+  the initial data value, an array of validators, and an array of async validators.\n+  \n+  This simple control doesn't have data or validators.\n+  In real apps, most form controls have both. \n+\n+.l-sub-section\n+  :marked\n+    Validators won't be covered at all in this guide.\n+    Learn about them in the [Form Validation](../cookbook/form-validation.html) cookbook.\n+\n+.l-main-section\n+a#create-template\n+:marked\n+  ## Create the template\n+  Now create the component's template, `app/hero-detail.component.html`, with the following markup.\n+\n++makeExample('reactive-forms/ts/app/hero-detail-1.component.html', 'basic-form','app/hero-detail.component.html')(format=\".\")\n+\n+:marked\n+  The `novalidate` attribute in the `<form>` element prevents the browser \n+  from attempting native HTML validations. \n+  The `[formGroup]=\"heroForm\"` tells Angular that the form element\n+  is associated with the `heroForm` property of the component class.\n+  The `formControlName=\"name\"` associates the `input` element with the `name` control inside the `heroForm`.\n+\n+.l-sub-section\n+  :marked\n+    Disregard the `form-group` and `form-control` _CSS_ classes. They belong to the \n+    <a href=\"http://getbootstrap.com/\" target=\"_blank\" title=\"Bootstrap CSS\">Bootstrap CSS library</a>,\n+    not Angular.\n+    They _style_ the form but in no way impact the logic of the form.\n+\n+a#import\n+:marked\n+  ## Import the _ReactiveFormsModule_\n+\n+  The `HeroDetailComponent` template uses directives from \n+  the `ReactiveFormsModule` in the `@angular/forms` library\n+  so you must add it to the `imports` array of the `NgModule` that declares that component.\n+  \n+  In this sample, you declare the `HeroDetailComponent` in the `AppModule`.\n+  Therefore, do the following three things in `app.module.ts`:\n+  1. Use a JavaScript `import` statement to access \n+  the `ReactiveFormsModule` and the `HeroDetailComponent`.\n+  1. Add `ReactiveFormsModule` to the `AppModule`'s `imports` list.\n+  1. Add `HeroDetailComponent` to the declarations array.\n+\n++makeExample('reactive-forms/ts/app/app.module.ts', 'v1','app/app.module.ts (excerpt)')(format=\".\")\n+\n+a#update\n+.l-main-section\n+:marked\n+  ## Display the _HeroDetailComponent_\n+  Revise the `AppComponent` template so it displays the `HeroDetailComponent`.\n++makeExample('reactive-forms/ts/app/app.component.1.ts', '','app/app.component.ts')(format=\".\")\n+\n+:marked\n+  ### Style the app\n+  You used bootstrap CSS classes in the template HTML of both the `AppComponent` and the `HeroDetailComponent`.\n+  Add the `bootstrap` _CSS stylesheet_ to the head of `index.html`:\n+\n++makeExample('reactive-forms/ts/index.html', 'bootstrap','index.html')(format=\".\")\n+\n+:marked\n+  Now that everything is wired up, the browser should display something like this: \n+\n+figure.image-display\n+  img(src=\"/resources/images/devguide/reactive-forms/hero-detail.png\" width=\"400px\" alt=\"Basic reactive form\")\n+\n+:marked\n+ The form looks great. But does it work? \n+  When the user enters a name, where does the value go? \n+  \n+  The value goes into the **_form model_** that backs the group's `FormControls`.\n+  To see the form model, add the following line after the \n+  closing `form` tag in the `hero-detail.component.html`:\n+\n++makeExample('reactive-forms/ts/app/hero-detail-2.component.html', 'form-value-json','app/hero-detail.component.html')(format=\".\")\n+\n+:marked\n+  The `heroForm.value` returns the _form model_.","path":"public/docs/ts/latest/guide/reactive-forms.jade","position":261,"original_position":261,"commit_id":"03b2aa9ee8439372ca46ce200a45ab2b21f6a1f2","original_commit_id":"03b2aa9ee8439372ca46ce200a45ab2b21f6a1f2","user":{"login":"kapunahelewong","id":4116963,"avatar_url":"https://avatars.githubusercontent.com/u/4116963?v=3","gravatar_id":"","url":"https://api.github.com/users/kapunahelewong","html_url":"https://github.com/kapunahelewong","followers_url":"https://api.github.com/users/kapunahelewong/followers","following_url":"https://api.github.com/users/kapunahelewong/following{/other_user}","gists_url":"https://api.github.com/users/kapunahelewong/gists{/gist_id}","starred_url":"https://api.github.com/users/kapunahelewong/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/kapunahelewong/subscriptions","organizations_url":"https://api.github.com/users/kapunahelewong/orgs","repos_url":"https://api.github.com/users/kapunahelewong/repos","events_url":"https://api.github.com/users/kapunahelewong/events{/privacy}","received_events_url":"https://api.github.com/users/kapunahelewong/received_events","type":"User","site_admin":false},"body":"ok, keeping form model. (Marking as done for myself.)","created_at":"2017-01-08T15:27:21Z","updated_at":"2017-01-08T15:27:21Z","html_url":"https://github.com/angular/angular.io/pull/2835#discussion_r95081832","pull_request_url":"https://api.github.com/repos/angular/angular.io/pulls/2835","_links":{"self":{"href":"https://api.github.com/repos/angular/angular.io/pulls/comments/95081832"},"html":{"href":"https://github.com/angular/angular.io/pull/2835#discussion_r95081832"},"pull_request":{"href":"https://api.github.com/repos/angular/angular.io/pulls/2835"}}},"pull_request":{"url":"https://api.github.com/repos/angular/angular.io/pulls/2835","id":94522835,"html_url":"https://github.com/angular/angular.io/pull/2835","diff_url":"https://github.com/angular/angular.io/pull/2835.diff","patch_url":"https://github.com/angular/angular.io/pull/2835.patch","issue_url":"https://api.github.com/repos/angular/angular.io/issues/2835","number":2835,"state":"open","locked":false,"title":"docs(reactive-forms): Add new reactive forms guide","user":{"login":"kapunahelewong","id":4116963,"avatar_url":"https://avatars.githubusercontent.com/u/4116963?v=3","gravatar_id":"","url":"https://api.github.com/users/kapunahelewong","html_url":"https://github.com/kapunahelewong","followers_url":"https://api.github.com/users/kapunahelewong/followers","following_url":"https://api.github.com/users/kapunahelewong/following{/other_user}","gists_url":"https://api.github.com/users/kapunahelewong/gists{/gist_id}","starred_url":"https://api.github.com/users/kapunahelewong/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/kapunahelewong/subscriptions","organizations_url":"https://api.github.com/users/kapunahelewong/orgs","repos_url":"https://api.github.com/users/kapunahelewong/repos","events_url":"https://api.github.com/users/kapunahelewong/events{/privacy}","received_events_url":"https://api.github.com/users/kapunahelewong/received_events","type":"User","site_admin":false},"body":"Reactive-forms guide.  Ready for Engineering Review\r\n\r\n**To Do**\r\n* [ ] Add e2e tests.\r\n* [ ] @kara's review","created_at":"2016-11-20T16:10:44Z","updated_at":"2017-01-08T15:27:21Z","closed_at":null,"merged_at":null,"merge_commit_sha":"ee52697f72ce99c4054b881fee4a276f29a93c00","assignee":null,"assignees":[],"milestone":null,"commits_url":"https://api.github.com/repos/angular/angular.io/pulls/2835/commits","review_comments_url":"https://api.github.com/repos/angular/angular.io/pulls/2835/comments","review_comment_url":"https://api.github.com/repos/angular/angular.io/pulls/comments{/number}","comments_url":"https://api.github.com/repos/angular/angular.io/issues/2835/comments","statuses_url":"https://api.github.com/repos/angular/angular.io/statuses/03b2aa9ee8439372ca46ce200a45ab2b21f6a1f2","head":{"label":"IdeaBlade:wong-reactive-forms","ref":"wong-reactive-forms","sha":"03b2aa9ee8439372ca46ce200a45ab2b21f6a1f2","user":{"login":"IdeaBlade","id":1630193,"avatar_url":"https://avatars.githubusercontent.com/u/1630193?v=3","gravatar_id":"","url":"https://api.github.com/users/IdeaBlade","html_url":"https://github.com/IdeaBlade","followers_url":"https://api.github.com/users/IdeaBlade/followers","following_url":"https://api.github.com/users/IdeaBlade/following{/other_user}","gists_url":"https://api.github.com/users/IdeaBlade/gists{/gist_id}","starred_url":"https://api.github.com/users/IdeaBlade/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/IdeaBlade/subscriptions","organizations_url":"https://api.github.com/users/IdeaBlade/orgs","repos_url":"https://api.github.com/users/IdeaBlade/repos","events_url":"https://api.github.com/users/IdeaBlade/events{/privacy}","received_events_url":"https://api.github.com/users/IdeaBlade/received_events","type":"Organization","site_admin":false},"repo":{"id":40154922,"name":"angular.io","full_name":"IdeaBlade/angular.io","owner":{"login":"IdeaBlade","id":1630193,"avatar_url":"https://avatars.githubusercontent.com/u/1630193?v=3","gravatar_id":"","url":"https://api.github.com/users/IdeaBlade","html_url":"https://github.com/IdeaBlade","followers_url":"https://api.github.com/users/IdeaBlade/followers","following_url":"https://api.github.com/users/IdeaBlade/following{/other_user}","gists_url":"https://api.github.com/users/IdeaBlade/gists{/gist_id}","starred_url":"https://api.github.com/users/IdeaBlade/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/IdeaBlade/subscriptions","organizations_url":"https://api.github.com/users/IdeaBlade/orgs","repos_url":"https://api.github.com/users/IdeaBlade/repos","events_url":"https://api.github.com/users/IdeaBlade/events{/privacy}","received_events_url":"https://api.github.com/users/IdeaBlade/received_events","type":"Organization","site_admin":false},"private":false,"html_url":"https://github.com/IdeaBlade/angular.io","description":"Website for Angular 2","fork":true,"url":"https://api.github.com/repos/IdeaBlade/angular.io","forks_url":"https://api.github.com/repos/IdeaBlade/angular.io/forks","keys_url":"https://api.github.com/repos/IdeaBlade/angular.io/keys{/key_id}","collaborators_url":"https://api.github.com/repos/IdeaBlade/angular.io/collaborators{/collaborator}","teams_url":"https://api.github.com/repos/IdeaBlade/angular.io/teams","hooks_url":"https://api.github.com/repos/IdeaBlade/angular.io/hooks","issue_events_url":"https://api.github.com/repos/IdeaBlade/angular.io/issues/events{/number}","events_url":"https://api.github.com/repos/IdeaBlade/angular.io/events","assignees_url":"https://api.github.com/repos/IdeaBlade/angular.io/assignees{/user}","branches_url":"https://api.github.com/repos/IdeaBlade/angular.io/branches{/branch}","tags_url":"https://api.github.com/repos/IdeaBlade/angular.io/tags","blobs_url":"https://api.github.com/repos/IdeaBlade/angular.io/git/blobs{/sha}","git_tags_url":"https://api.github.com/repos/IdeaBlade/angular.io/git/tags{/sha}","git_refs_url":"https://api.github.com/repos/IdeaBlade/angular.io/git/refs{/sha}","trees_url":"https://api.github.com/repos/IdeaBlade/angular.io/git/trees{/sha}","statuses_url":"https://api.github.com/repos/IdeaBlade/angular.io/statuses/{sha}","languages_url":"https://api.github.com/repos/IdeaBlade/angular.io/languages","stargazers_url":"https://api.github.com/repos/IdeaBlade/angular.io/stargazers","contributors_url":"https://api.github.com/repos/IdeaBlade/angular.io/contributors","subscribers_url":"https://api.github.com/repos/IdeaBlade/angular.io/subscribers","subscription_url":"https://api.github.com/repos/IdeaBlade/angular.io/subscription","commits_url":"https://api.github.com/repos/IdeaBlade/angular.io/commits{/sha}","git_commits_url":"https://api.github.com/repos/IdeaBlade/angular.io/git/commits{/sha}","comments_url":"https://api.github.com/repos/IdeaBlade/angular.io/comments{/number}","issue_comment_url":"https://api.github.com/repos/IdeaBlade/angular.io/issues/comments{/number}","contents_url":"https://api.github.com/repos/IdeaBlade/angular.io/contents/{+path}","compare_url":"https://api.github.com/repos/IdeaBlade/angular.io/compare/{base}...{head}","merges_url":"https://api.github.com/repos/IdeaBlade/angular.io/merges","archive_url":"https://api.github.com/repos/IdeaBlade/angular.io/{archive_format}{/ref}","downloads_url":"https://api.github.com/repos/IdeaBlade/angular.io/downloads","issues_url":"https://api.github.com/repos/IdeaBlade/angular.io/issues{/number}","pulls_url":"https://api.github.com/repos/IdeaBlade/angular.io/pulls{/number}","milestones_url":"https://api.github.com/repos/IdeaBlade/angular.io/milestones{/number}","notifications_url":"https://api.github.com/repos/IdeaBlade/angular.io/notifications{?since,all,participating}","labels_url":"https://api.github.com/repos/IdeaBlade/angular.io/labels{/name}","releases_url":"https://api.github.com/repos/IdeaBlade/angular.io/releases{/id}","deployments_url":"https://api.github.com/repos/IdeaBlade/angular.io/deployments","created_at":"2015-08-04T00:40:19Z","updated_at":"2016-11-03T17:28:50Z","pushed_at":"2017-01-08T10:14:10Z","git_url":"git://github.com/IdeaBlade/angular.io.git","ssh_url":"git@github.com:IdeaBlade/angular.io.git","clone_url":"https://github.com/IdeaBlade/angular.io.git","svn_url":"https://github.com/IdeaBlade/angular.io","homepage":"https://angular.io","size":52772,"stargazers_count":6,"watchers_count":6,"language":"HTML","has_issues":false,"has_downloads":true,"has_wiki":true,"has_pages":false,"forks_count":6,"mirror_url":null,"open_issues_count":0,"forks":6,"open_issues":0,"watchers":6,"default_branch":"master"}},"base":{"label":"angular:master","ref":"master","sha":"6d431f11ceea573806b617dcf2084417c37480a7","user":{"login":"angular","id":139426,"avatar_url":"https://avatars.githubusercontent.com/u/139426?v=3","gravatar_id":"","url":"https://api.github.com/users/angular","html_url":"https://github.com/angular","followers_url":"https://api.github.com/users/angular/followers","following_url":"https://api.github.com/users/angular/following{/other_user}","gists_url":"https://api.github.com/users/angular/gists{/gist_id}","starred_url":"https://api.github.com/users/angular/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/angular/subscriptions","organizations_url":"https://api.github.com/users/angular/orgs","repos_url":"https://api.github.com/users/angular/repos","events_url":"https://api.github.com/users/angular/events{/privacy}","received_events_url":"https://api.github.com/users/angular/received_events","type":"Organization","site_admin":false},"repo":{"id":31985425,"name":"angular.io","full_name":"angular/angular.io","owner":{"login":"angular","id":139426,"avatar_url":"https://avatars.githubusercontent.com/u/139426?v=3","gravatar_id":"","url":"https://api.github.com/users/angular","html_url":"https://github.com/angular","followers_url":"https://api.github.com/users/angular/followers","following_url":"https://api.github.com/users/angular/following{/other_user}","gists_url":"https://api.github.com/users/angular/gists{/gist_id}","starred_url":"https://api.github.com/users/angular/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/angular/subscriptions","organizations_url":"https://api.github.com/users/angular/orgs","repos_url":"https://api.github.com/users/angular/repos","events_url":"https://api.github.com/users/angular/events{/privacy}","received_events_url":"https://api.github.com/users/angular/received_events","type":"Organization","site_admin":false},"private":false,"html_url":"https://github.com/angular/angular.io","description":"Website for Angular 2","fork":false,"url":"https://api.github.com/repos/angular/angular.io","forks_url":"https://api.github.com/repos/angular/angular.io/forks","keys_url":"https://api.github.com/repos/angular/angular.io/keys{/key_id}","collaborators_url":"https://api.github.com/repos/angular/angular.io/collaborators{/collaborator}","teams_url":"https://api.github.com/repos/angular/angular.io/teams","hooks_url":"https://api.github.com/repos/angular/angular.io/hooks","issue_events_url":"https://api.github.com/repos/angular/angular.io/issues/events{/number}","events_url":"https://api.github.com/repos/angular/angular.io/events","assignees_url":"https://api.github.com/repos/angular/angular.io/assignees{/user}","branches_url":"https://api.github.com/repos/angular/angular.io/branches{/branch}","tags_url":"https://api.github.com/repos/angular/angular.io/tags","blobs_url":"https://api.github.com/repos/angular/angular.io/git/blobs{/sha}","git_tags_url":"https://api.github.com/repos/angular/angular.io/git/tags{/sha}","git_refs_url":"https://api.github.com/repos/angular/angular.io/git/refs{/sha}","trees_url":"https://api.github.com/repos/angular/angular.io/git/trees{/sha}","statuses_url":"https://api.github.com/repos/angular/angular.io/statuses/{sha}","languages_url":"https://api.github.com/repos/angular/angular.io/languages","stargazers_url":"https://api.github.com/repos/angular/angular.io/stargazers","contributors_url":"https://api.github.com/repos/angular/angular.io/contributors","subscribers_url":"https://api.github.com/repos/angular/angular.io/subscribers","subscription_url":"https://api.github.com/repos/angular/angular.io/subscription","commits_url":"https://api.github.com/repos/angular/angular.io/commits{/sha}","git_commits_url":"https://api.github.com/repos/angular/angular.io/git/commits{/sha}","comments_url":"https://api.github.com/repos/angular/angular.io/comments{/number}","issue_comment_url":"https://api.github.com/repos/angular/angular.io/issues/comments{/number}","contents_url":"https://api.github.com/repos/angular/angular.io/contents/{+path}","compare_url":"https://api.github.com/repos/angular/angular.io/compare/{base}...{head}","merges_url":"https://api.github.com/repos/angular/angular.io/merges","archive_url":"https://api.github.com/repos/angular/angular.io/{archive_format}{/ref}","downloads_url":"https://api.github.com/repos/angular/angular.io/downloads","issues_url":"https://api.github.com/repos/angular/angular.io/issues{/number}","pulls_url":"https://api.github.com/repos/angular/angular.io/pulls{/number}","milestones_url":"https://api.github.com/repos/angular/angular.io/milestones{/number}","notifications_url":"https://api.github.com/repos/angular/angular.io/notifications{?since,all,participating}","labels_url":"https://api.github.com/repos/angular/angular.io/labels{/name}","releases_url":"https://api.github.com/repos/angular/angular.io/releases{/id}","deployments_url":"https://api.github.com/repos/angular/angular.io/deployments","created_at":"2015-03-10T22:32:34Z","updated_at":"2017-01-08T15:06:43Z","pushed_at":"2017-01-08T10:14:11Z","git_url":"git://github.com/angular/angular.io.git","ssh_url":"git@github.com:angular/angular.io.git","clone_url":"https://github.com/angular/angular.io.git","svn_url":"https://github.com/angular/angular.io","homepage":"https://angular.io","size":38727,"stargazers_count":801,"watchers_count":801,"language":"HTML","has_issues":true,"has_downloads":true,"has_wiki":true,"has_pages":false,"forks_count":916,"mirror_url":null,"open_issues_count":250,"forks":916,"open_issues":250,"watchers":801,"default_branch":"master"}},"_links":{"self":{"href":"https://api.github.com/repos/angular/angular.io/pulls/2835"},"html":{"href":"https://github.com/angular/angular.io/pull/2835"},"issue":{"href":"https://api.github.com/repos/angular/angular.io/issues/2835"},"comments":{"href":"https://api.github.com/repos/angular/angular.io/issues/2835/comments"},"review_comments":{"href":"https://api.github.com/repos/angular/angular.io/pulls/2835/comments"},"review_comment":{"href":"https://api.github.com/repos/angular/angular.io/pulls/comments{/number}"},"commits":{"href":"https://api.github.com/repos/angular/angular.io/pulls/2835/commits"},"statuses":{"href":"https://api.github.com/repos/angular/angular.io/statuses/03b2aa9ee8439372ca46ce200a45ab2b21f6a1f2"}}}}
{"actor":{"display_login":"kapunahelewong"}}