- Microsoft MAUI Graphics
- GDI+の呪縛から解き放たれた…!!
- パフォーマンスと生産性
- Xamarin時代の切なさもあるが非常に期待ができるものになっている
- .NET7自体のパフォーマンスアップ
- Orleans
- HTTPの世界でできることが増えるのではないだろうか
- Teamsの裏側でも使われているらしい
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
private downloadFile(data: any) { | |
var blob = new Blob([(<any>data)], { type: "text/csv" }); | |
let csvFileName = "日本語ファイル名称.csv"; | |
if (window.navigator.msSaveOrOpenBlob) { | |
//IEの場合 | |
navigator.msSaveBlob(blob, csvFileName); | |
} else { | |
//IE以外(Chrome, Firefox) |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
import { Injectable, Inject } from "@angular/core"; | |
import { APP_BASE_HREF } from "@angular/common"; | |
import { Observable } from "rxjs/Observable"; | |
@Injectable() | |
export class WebApi { | |
constructor( | |
@Inject(APP_BASE_HREF) private _baseHref: string | |
) { } |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
const REQUIRED_MESSAGE = '@1@は必須項目です。'; | |
const MAXLENGTH_MESSAGE = '@1@は@2@文字以内で入力して下さい。'; | |
export class ValidarionMessages { | |
static getRequredMessage(field: string): string { | |
return REQUIRED_MESSAGE.replace(/@1@/g, field); | |
} | |
static getMaxLengthMessage(field: string, maxlength: number): string { |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
import { Validators } from '@angular/forms'; | |
import { ValidarionMessages } from '../base/validationmessage'; | |
export const USER_NAME_CONTROL_KEYWORD = 'username'; | |
export const USER_NAME_CONTROL_SHOW_NAME = 'ユーザー名'; | |
export const USER_NAME_MAX_LENGTH = 20; | |
export const USER_ID_CONTROL_KEYWORD = 'userid'; | |
export const USER_ID_CONTROL_SHOW_NAME = 'ユーザID'; | |
export const USER_ID_MAX_LENGTH = 10; |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
<form [formGroup]="inputForm"> | |
<div> | |
<md-input-container> | |
<input | |
mdInput | |
placeholder="UserId" | |
[formControlName]="USER_ID_CONTROL_KEYWORD"> | |
<md-error> | |
{{formErrors[USER_ID_CONTROL_KEYWORD]}} | |
</md-error> |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
import { Component, OnInit } from "@angular/core"; | |
import { FormBuilder } from "@angular/forms"; | |
import { BaseComponent } from "../base/base.component"; | |
import * as validSettings from "./validation-settings"; | |
@Component({ | |
templateUrl: "./reactive-firm-one.html", | |
}) | |
export class ReactiveFormOne extends BaseComponent implements OnInit { | |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
import { Injectable } from "@angular/core"; | |
import { CanDeactivate, ActivatedRouteSnapshot, RouterStateSnapshot } from "@angular/router"; | |
import { Observable } from "rxjs/Observable"; | |
import { Observer } from "rxjs/Observer"; | |
import { BaseComponent } from "../base/base.component"; | |
@Injectable() | |
export class InputPageCanDeactivatedGuard<T extends BaseComponent> implements CanDeactivate<T>{ | |
canDeactivate( | |
component: T, | |
route: ActivatedRouteSnapshot, |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
import { Routes, RouterModule } from "@angular/router" | |
import { EmptyComponent } from "../empty/empty.component"; | |
import { ReactiveFormOne } from "../reactive-forms/reactive-form-one.component"; | |
import { InputPageCanDeactivatedGuard } from "./inputpage-can-deactivated-guard" | |
const routes: Routes = [ | |
{ path: "empty", component: EmptyComponent }, | |
{ path: "r1", component: ReactiveFormOne, canDeactivate: [InputPageCanDeactivatedGuard] }, | |
{ path: "**", component: EmptyComponent } | |
] |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
export class BaseComponent { | |
inputForm: FormGroup; | |
formErrors: any; | |
validationMessage: any; | |
buildForms() { | |
this.inputForm.valueChanges.subscribe(data => { | |
this.onValueChange(data); | |
}); | |
} |
NewerOlder