diff --git a/src/components/input/input.html b/src/components/input/input.html
index 8c526675fec2..33bd44808055 100644
--- a/src/components/input/input.html
+++ b/src/components/input/input.html
@@ -13,6 +13,8 @@
[attr.aria-required]="ariaRequired"
[attr.aria-invalid]="ariaInvalid"
[attr.autocomplete]="autoComplete"
+ [attr.autocorrect]="autoCorrect"
+ [attr.autocapitalize]="autoCapitalize"
[autofocus]="autoFocus"
[disabled]="disabled"
[id]="inputId"
diff --git a/src/components/input/input.spec.ts b/src/components/input/input.spec.ts
index 12ed39133310..ccfbf1d67041 100644
--- a/src/components/input/input.spec.ts
+++ b/src/components/input/input.spec.ts
@@ -273,6 +273,46 @@ describe('MdInput', function () {
});
}));
+ it('supports the autoCorrect attribute', async(() => {
+ var template = '';
+
+ builder.overrideTemplate(MdInputOptionalAttributeController, template)
+ .createAsync(MdInputOptionalAttributeController)
+ .then(fixture => {
+ fixture.detectChanges();
+
+ let input: MdInput = fixture.debugElement.query(By.directive(MdInput)).componentInstance;
+ let el: HTMLInputElement = fixture.debugElement.query(By.css('input')).nativeElement;
+
+ expect(el).not.toBeNull();
+ expect(el.getAttribute('autocorrect')).toBeNull();
+
+ input.autoCorrect = 'on';
+ fixture.detectChanges();
+ expect(el.getAttribute('autocorrect')).toEqual('on');
+ });
+ }));
+
+ it('supports the autoCapitalize attribute', async(() => {
+ var template = '';
+
+ builder.overrideTemplate(MdInputOptionalAttributeController, template)
+ .createAsync(MdInputOptionalAttributeController)
+ .then(fixture => {
+ fixture.detectChanges();
+
+ let input: MdInput = fixture.debugElement.query(By.directive(MdInput)).componentInstance;
+ let el: HTMLInputElement = fixture.debugElement.query(By.css('input')).nativeElement;
+
+ expect(el).not.toBeNull();
+ expect(el.getAttribute('autocapitalize')).toBeNull();
+
+ input.autoCapitalize = 'on';
+ fixture.detectChanges();
+ expect(el.getAttribute('autocapitalize')).toEqual('on');
+ });
+ }));
+
it('supports the autoComplete attribute as an unbound attribute', async(() => {
var template = '';
diff --git a/src/components/input/input.ts b/src/components/input/input.ts
index 5985f39b31c0..f8b6b91409ec 100644
--- a/src/components/input/input.ts
+++ b/src/components/input/input.ts
@@ -144,6 +144,8 @@ export class MdInput implements ControlValueAccessor, AfterContentInit, OnChange
@Input() hintLabel: string = '';
@Input() autoComplete: string;
+ @Input() autoCorrect: string;
+ @Input() autoCapitalize: string;
@Input() @BooleanFieldValue() autoFocus: boolean = false;
@Input() @BooleanFieldValue() disabled: boolean = false;
@Input() id: string = `md-input-${nextUniqueId++}`;